如何使用for循环MATLAB创建矩阵

时间:2016-05-16 01:59:21

标签: matlab

我有三个相同大小的向量,pressureyearmonth。基本上我想创建一个压力值矩阵,它与使用for循环测量它们的月份和年份相对应。它应该是12x100,以便显示为12个月的下降和100年从左到右。

除了创建初始结构之外,我只是不确定如何实际创建矩阵。到目前为止,我只能找到所有年份一个月的压力(低于我1月份的压力)。

A = zeros([12, 100]);
for some_years = 1900:2000
    press = pressure(year == some_years & month == 1)
end

我只能打印所有年份1月的压力,但我想将所有年份的所有压力存储在一个矩阵中。如果有人可以提供帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

从变量pressureyearmonth开始。我会做类似的事情:

使用for循环的相当强大的解决方案:

T = length(pressure); % get number of time periods. I will assume vectors same length
if(length(pressure) ~= T || length(month) ~= T)
   error('length mismatch');
end
min_year = min(year); % this year will correspond to index 1
max_year = max(year); 

A = NaN(max_year - min_year + 1, 12);      % I like to initialize to NaN (not a number)
                                           % this way missing values are NaN
for i=1:T
    year_index = year(i) - min_year + 1;
    month_index = month(i);  % Im assuming months run from 1 to 12
    A(year_index, month_index) = pressure(i);
end

如果你的数据是超级好的格式......

如果您的数据没有丢失,重复或无序的年月对(即数据格式如下):

year      month        pressure
1900          1            ...
1900          2            ...
...          ...           ...
1900         12            ...
1901          1            ...
...          ...           ...

然后你可以做一个班轮:

A = reshape(pressure, 12, max(year) - min(year) + 1)';