0

私は現在、Matlabでセル配列のセル配列を持つプロジェクトに取り組んでいます。最初のセル配列は、長さが464列、深さが1行です。これらの各セルは、96列365行の別のセル配列です。464個の配列のそれぞれについて96列の平均を取得し、平均と呼ばれる新しい配列の異なる行に464個の配列のそれぞれを配置できるようにする必要があります。私は次のように1つの列だけを実行するコードを書こうとしました:

    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 に答える