Storing values calculated in a 'for' loop in a matrix / vector
3 次查看(过去 30 天)
显示 更早的评论
I would very much appreciate some help storing values in a matrix. I am trying to do a growth curve (See: http://kellymom.com/images/growth/growthcharts.gif). For that reason I have to do quantile equations for a set of data (age and height). Currently, I've made a 'for' loop, which does calculate the value as intended, however it only stores the last result. How do I make it store the data as a matrix like:
Quantile 25 %
Age Height
- 6 123
- 7 129
- 8 135
and so forth.
Thank you very much!
Note: male.data consists of two columns. First column is age and second is height of two thousand male participants. The file: age.height.mat is my data.
[EDITED, Jan, contents of the M-file from dropbox:]
%%Assignment 1 - Growth curves for men and women
clear all ;
clc ;
load age.height.mat
% Sorting the data to be plotted
male.data = sortrows(male.data) ;
plot(male.data(:,1),male.data(:,2),'r+')
male.growth = zeros(1, 73);
t = zeros(1, 73);
for k = 6:78
male.growth(k-5) = male.data(male.data(:,1) == k, 2);
t(k-5) = quantile(male.growth(k-5), 0.5);
end
% Note that t sometimes returns 'not a number', when a specific age is not
% present. That won't be a problem in my final script, as I am not allowed
% to publish all my data for copyright reasons.
采纳的回答
Jan
2013-3-13
编辑:Jan
2013-3-13
Please do not start your code with the cruel killer. There is no benefit in removing all loaded functions from the memory by clear all. If you have a good reason to clear all variables, use clear variables or even better use a function, because it has its own workspace.
For storing the results in a vector:
male.growth = zeros(1, 73); % Pre-allocate!!! Optional but recommended
t = zeros(1, 73);
for k = 6:78 % Avoid using "i" as a variable
male.growth(k-5) = male.data(male.data(:,1) == k, 2); % Without FIND
t(k-5) = quantile(male.growth(k-5), 0.5);
end
4 个评论
Jan
2013-3-18
@Tobias: While for:
male.growth = male.data(male.data(:,1) == k, 2);
the dimensions on the left side are adjusted automatically, as for:
male.growth(100) == 8;
the missing elements are set to implicitely, a vector cannot assigned to a scalar:
a(1) = 1:10; % ERROR
更多回答(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!