Using for-loop to extract data from every column in a matrix
45 次查看(过去 30 天)
显示 更早的评论
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 个评论
Stephen23
2022-5-30
"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.
回答(2 个)
Walter Roberson
2022-5-30
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 个评论
Image Analyst
2022-5-30
@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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!