Add values to a matrix from a loop
Mostra commenti meno recenti
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.
Risposte (3)
Poongavanam Palani
il 9 Ott 2019
This should help!
P = [];
for j = 1:15
percentage_change = (x((8+j),k)-baseline1/baseline1*100;
P = [P, percentage_change,];
end
Image Analyst
il 7 Mar 2014
P = percentage_change;
Of course after you do that P is no longer empty.
18 Commenti
Image Analyst
il 7 Mar 2014
Modificato: Image Analyst
il 7 Mar 2014
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
il 7 Mar 2014
Image Analyst
il 7 Mar 2014
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
il 7 Mar 2014
Image Analyst
il 7 Mar 2014
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
il 7 Mar 2014
Image Analyst
il 8 Mar 2014
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
il 8 Mar 2014
Image Analyst
il 8 Mar 2014
It's not a proper csv file because there's no commas separating the variables. Please fix it first.
Thang Le
il 8 Mar 2014
Image Analyst
il 8 Mar 2014
OK, that's fixed, but I can't run your code. What is the spm function? Is it necessary?
Thang Le
il 8 Mar 2014
Image Analyst
il 8 Mar 2014
I can't run this function
spm('Defaults','fMRI');
Thang Le
il 8 Mar 2014
Image Analyst
il 8 Mar 2014
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
il 8 Mar 2014
Image Analyst
il 8 Mar 2014
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
il 8 Mar 2014
Jacques
il 8 Mar 2014
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 Commenti
Image Analyst
il 8 Mar 2014
In MATLAB, type control-a then control-i. Then paste in here.
Nathanael Ferster
il 30 Set 2021
This helped me too, thanks.
Image Analyst
il 30 Set 2021
@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.
Categorie
Scopri di più su Graphics Performance in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!