Using for-loop to extract data from every column in a matrix
47 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi,
I'm new to using for-loops - can anyone help with my problem.
I have a matrix, 18000X31. I want to be able to write a for loop that for each column, a new variable is created that includes the data from the rows 3000-13600. Any help would be gratefully appreciated.
Thanks in advance!
5 comentarios
Stephen23
el 30 de Mayo de 2022
"I thought using a for-loop would help to allow me to step-by-step work through my problem."
There is no problem with using a FOR loop. Or reshaping, as Walter Roberson showed you.
But you should avoid creating "new variables" as you described in your question.
Respuestas (2)
Walter Roberson
el 30 de Mayo de 2022
M = randi([0 9], 180, 31); %example
letters = ['A':'Z' 'a' : 'z'];
numletters = length(letters);
for col = 1 : size(M, 2)
randname = letters( randi(numletters, 1, 32) );
tosave.(randname) = M(:,col);
end
tname = tempname() + ".mat";
save(tname, '-struct', 'tosave');
load(tname)
whos
Now what? What are you going to do with sReqMWIVCMwWweFeFOJCcijOdpnHeNHi now that you have it?
0 comentarios
Image Analyst
el 30 de Mayo de 2022
@Edward Keavney, do this for your matrix m:
[rows, columns] = size(m)
for col = 1 : columns
fprintf('Processing column %d of %d.\n', col, columns);
% Create a new variable with only this particular column,
% but only with rows 3000 to 13600:
thisColumn = m(3000 : 13600, col);
% Now process this column somehow,
% like getting its mean or whatever you want to do.
end
fprintf('All done!\n');
0 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!