0

我目前正在 Matlab 中从事一个项目,其中我有一个单元阵列。第一个元胞数组长 464 列,深 1 行。这些单元中的每一个都是另一个 96 列和 365 行的单元阵列。我需要能够获得 464 个数组中每个数组的 96 列的平均值,并将 464 个数组中的每个数组放在一个称为均值的新数组中的不同行上。我试图编写代码来只做一列,如下所示:

    mean = Homes{1,1}(1:)

但是当我尝试运行此代码时,我收到以下错误:

    mean = Homes{1,1}(1:)
                       |
    Error: Unbalanced or unexpected parenthesis or bracket.

基本上我的最终数组名称意味着需要 96 列乘 464 行。我被困住了,真的可以使用你的帮助。

谢谢你。

4

1 回答 1

0

我建议您在较小的矩阵上尝试以下代码。看看它是否能给你想要的结果。

a=cell(1,4); %for you it will be a=cell(1,464)
for i=1:4
   a{i}=randi(10,[5 10]); %for you it will be a{i}=randi(10,[365 96]);
end
a1=cell2mat(a);  %just concatenating
a1=mean(a1); %getting the mean for each column. in your case, you should get the mean for 96*464
a2=reshape(a1,[10 4]); %now what reshape does it it takes first 10 elements and arranges it into first column.
%Therefore, since I finally want a 4x10 matrix (in your case 464x96), i.e. mean of 10 elements in first cell array on first row and so on...
%Thus, 1st 10 elements should go to first column after doing reshape (since you want to keep them together). Therefore, instead of directly making matrix as 4x10, first make it as 10x4 and then take transpose (which is the next step).

a2=a2'; %thus you get a 4x10 matrix.

具体而言,代码将是

a=cell(1,464); 
for i=1:464
   a{i}=randi(10,[365 96]); 
end
a1=cell2mat(a);  
a1=mean(a1); 
a2=reshape(a1,[96 365]);                        
a2=a2'; 
于 2013-03-12T22:43:16.280 回答