Add values to a matrix from a loop
显示 更早的评论
Hi,
I have the following lines in my script:
for j=0:15;
percentage_change = (x((8+j),k)-baseline1)/baseline1*100;
end
The above gives me 16 different values. Could anyone please tell me how I would go about putting all these 16 values in an empty 16x1 matrix called P? Thank you so much for your help.
回答(3 个)
Poongavanam Palani
2019-10-9
This should help!
P = [];
for j = 1:15
percentage_change = (x((8+j),k)-baseline1/baseline1*100;
P = [P, percentage_change,];
end
Image Analyst
2014-3-7
P = percentage_change;
Of course after you do that P is no longer empty.
18 个评论
Image Analyst
2014-3-7
编辑:Image Analyst
2014-3-7
If you want to store all the percentage_change, and k is a list of 16 indexes, so that percentage_change is a row vector, then
P = zeros(16, 16)
for j=0:15
percentage_change = (x((8+j),k)-baseline1)/baseline1*100;
P(j, :) = percentage_change;
end
Thang Le
2014-3-7
Image Analyst
2014-3-7
You need P(j+1,:) because you can't have the 0th row. See if this works for you:
x = rand(1000, 50);
k=1:16;
P = zeros(16, 16)
baseline1 = 100;
for j=0:15
percentage_change = (x((8+j),k)-baseline1)/baseline1*100;
P(j+1, :) = percentage_change;
end
P
Thang Le
2014-3-7
Image Analyst
2014-3-7
It runs with the sample data x I created. The only way to figure it out is to upload your data. Also, what does "whos x" report? And what are you using for k and baseline1?
Thang Le
2014-3-7
Image Analyst
2014-3-8
I used csvread() to read this into x, and x is not a N rows by 16 column array. There are 2001 rows and only 1 column, not 16. So, what's going on?
Thang Le
2014-3-8
Image Analyst
2014-3-8
It's not a proper csv file because there's no commas separating the variables. Please fix it first.
Thang Le
2014-3-8
Image Analyst
2014-3-8
OK, that's fixed, but I can't run your code. What is the spm function? Is it necessary?
Thang Le
2014-3-8
Image Analyst
2014-3-8
I can't run this function
spm('Defaults','fMRI');
Thang Le
2014-3-8
Image Analyst
2014-3-8
Well now I've got to leave for a few hours. Thang, you're not making it easy to help you and I'm not sure why. What value should I assign to spm_select to get it to demonstrate your problem? If you give me a line of code to assign spm_select then I might try it when I get back.
Thang Le
2014-3-8
Image Analyst
2014-3-8
Since I can't run your code. I really recommend you take the same actions I would take to solve your issues. And that is to carry out the actions you will learn in this video: http://blogs.mathworks.com/videos/2012/07/03/debugging-in-matlab/
Thang Le
2014-3-8
Jacques
2014-3-8
P = zeros(16,1);
for j=0:15;
percentage_change = (x((8+j),k)-baseline1)/baseline1*100;
P(j+1) = percentage_change;
end
Sorry for not indenting code, I don't know how to do that...
3 个评论
Image Analyst
2014-3-8
In MATLAB, type control-a then control-i. Then paste in here.
Nathanael Ferster
2021-9-30
This helped me too, thanks.
Image Analyst
2021-9-30
@Nathanael Ferster, glad it helped. Maybe it's a little known trick. If more people would type control-a then control-i in MATLAB before pasting in here, then it would sure make the code easier to follow. Of course after they paste it in, they still need to highlight it and click the Code icon to format it as code and enable the "copy" button so that people can copy the entire code with one click.
类别
在 帮助中心 和 File Exchange 中查找有关 Graphics Performance 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!