0

10倍にしてデータをセルに保存することに成功し、セルの構造は次のようになります。

[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]

これは、このセルに含まれるデータの小さなスナップショットです。このセルを変数に割り当てるとしましょう。これcellは、cell{1,1}実際にはアイリス データです。

5.1000    3.3000    1.7000    0.5000    1.0000
6.8000    3.2000    5.9000    2.3000    3.0000
5.0000    2.3000    3.3000    1.0000    2.0000
7.4000    2.8000    6.1000    1.9000    3.0000
6.5000    3.2000    5.1000    2.0000    3.0000
4.8000    3.4000    1.9000    0.2000    1.0000

cell{1,2}

7.2000    3.2000    6.0000    1.8000    3.0000
6.1000    2.6000    5.6000    1.4000    3.0000
6.4000    2.9000    4.3000    1.3000    2.0000
6.8000    3.0000    5.5000    2.1000    3.0000
6.1000    2.8000    4.0000    1.3000    2.0000

今、私は各行を反復処理し、最初の列 Cell{1,1}, Cell{1,2) のデータを解析しようとしています...どうすればそれを行うことができますか? セルを反復処理する手法は何ですか?

4

1 に答える 1

3

このカットダウンの例はあなたの問題を解決しますか?

Z = cell(2, 2);
Z{1, 1} = rand(8, 5); Z{1, 2} = rand(2, 5); 
Z{2, 1} = rand(8, 5); Z{2, 2} = rand(2, 5);
X = cell2mat(Z(:, 1));
XFirstCol = X(:, 1);

セル配列の最初の列のすべての行列を 1 つの大きな行列にcell2mat連結し、最後の行でその行列の最初の列を取得します。

代わりに、セル配列をループする方法を尋ねていた場合は、数値配列と同じ方法でループしますが、中かっこを使用してセル配列の要素にインデックスを付けます。つまり、次のようになります。

for i = 1:2
    CurrentCell = Z{i, 1};
    FirstColumnOfCurrentCell = CurrentCell(:, 1);
end

または、これらの 2 行を次のように組み合わせることができます。FirstColumnOfCurrentCell = Z{i, 1}(:, 1);

cell最後に、変数の名前として使用しないでください。cell組み込みの matlab 関数の名前でもあるため、これはお勧めできません。

于 2012-10-01T04:34:47.460 に答える