Add values to a matrix from a loop
Mostrar comentarios más antiguos
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.
Respuestas (3)
Poongavanam Palani
el 9 de Oct. de 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
el 7 de Mzo. de 2014
P = percentage_change;
Of course after you do that P is no longer empty.
18 comentarios
Image Analyst
el 7 de Mzo. de 2014
Editada: Image Analyst
el 7 de Mzo. de 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
el 7 de Mzo. de 2014
Image Analyst
el 7 de Mzo. de 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
el 7 de Mzo. de 2014
Image Analyst
el 7 de Mzo. de 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
el 7 de Mzo. de 2014
Image Analyst
el 8 de Mzo. de 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
el 8 de Mzo. de 2014
Image Analyst
el 8 de Mzo. de 2014
It's not a proper csv file because there's no commas separating the variables. Please fix it first.
Thang Le
el 8 de Mzo. de 2014
Image Analyst
el 8 de Mzo. de 2014
OK, that's fixed, but I can't run your code. What is the spm function? Is it necessary?
Thang Le
el 8 de Mzo. de 2014
Image Analyst
el 8 de Mzo. de 2014
I can't run this function
spm('Defaults','fMRI');
Thang Le
el 8 de Mzo. de 2014
Image Analyst
el 8 de Mzo. de 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
el 8 de Mzo. de 2014
Image Analyst
el 8 de Mzo. de 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
el 8 de Mzo. de 2014
Jacques
el 8 de Mzo. de 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 comentarios
Image Analyst
el 8 de Mzo. de 2014
In MATLAB, type control-a then control-i. Then paste in here.
Nathanael Ferster
el 30 de Sept. de 2021
This helped me too, thanks.
Image Analyst
el 30 de Sept. de 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.
Categorías
Más información sobre Graphics Performance en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!