Info
La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.
Creating a matrix of 1's and 0s after comparing strings
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi all,
Ive been having some trouble with my code for some months now. I have several very large files that need to have strings compared, and if theres a match, put a 1 in a box, if false, put a 0 in a box.
My matrices are very large; some are as big as 200 rows by 200000 columns, each needing the check to be made. So far, my experience (and probably wrong programming) have made this an extremely long proecss with the code I have, as it seems to check every single cell with every iteration through my for loops. Im no programmer though, and I only got this code after trying many different things.
Any advice on how to optimise/rejig this would be of huge help, as as it is, its taking far too long to go through each, sometimes literally weeks. Here is an example of each strings being compared, where my code goes through the first 28 chars of the longer string to see if theres a match:
'TCGA-A6-2670-01A-02W-0831-10'
'TCGA-AA-A01Q-01A-01W-A005-10_AAAS_8086_12_53702089_-_C'
Here's the code I use:
[no_patients, no_mutations] = size(matrix);
for row_index = 2:no_patients
for column_index = 2:no_mutations
matrix{row_index,column_index} = strncmp(matrix{row_index,1},matrix{1,column_index},28)
end
end
thanks
0 comentarios
Respuestas (1)
the cyclist
el 24 de Mayo de 2014
Editada: the cyclist
el 24 de Mayo de 2014
Here is a miniature version, where I just checked the first 2 characters (N=2) of a fixed string against a cell array. Does this do what you want?
s = 'AB';
matrix = {'ABA','ABB';
'ACA','ACC'}
N = 2;
tf = cellfun(@(x)strncmp(x,s,N),matrix);
I also wrote the result to a separate logical array, rather than storing in-place.
2 comentarios
the cyclist
el 24 de Mayo de 2014
Sorry. I think I misread your code. Can I just clarify? Are you checking ALL of the elements in Row 1 of your matrix and ALL of the elements in Column 1 of your matrix?
So, if matrix(16,1) matches matrix(1,283), then you want to put a 1 into element (16,283)?
La pregunta está cerrada.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!