1. ホーム
  2. arrays

[解決済み] セル配列の各要素を削除する

2022-02-25 03:05:26

質問

100 X 1 (n1) のセル配列があり、各セルにはより大きなデータセット (100 X 100, n2) のインデックスが格納されています。私は、個々の要素(インデックス)にアクセスし、別のデータセットの値をこれらのインデックスと比較するために、入れ子ループを作成しました。もし条件が成功したら、元のセル配列からその要素を削除して、新しいセル配列にしたい。しかし、matlabでその要素を[]にしても、セル配列の値は変わりません。コードは以下の通りです。

for i = 1:length(n1)
    for j = 1:length(n1{i, 1})
        if n2(i,n1{i,1}(1,j)) > n3(i) && n2(i, n1{i,1}(1,j)) > n4(n1{i, 1}(1, j))
            n1{i,1}(1,j) == [];
        end                          
    end
end

解決方法は?

ということですね。 n1(i,1) は常に行ベクトルなので、使用する必要があります。

n1{i,1}(j) = [];

もし n1(i,1) が列や行でない場合、中央から要素を削除することは不可能です。

例えば

A = {[1 2 3],[5 8 9]}
A{1,2}(1,2) = []

はエラーを出します。 A null assignment can have only one non-colon index .

しかし A{1,2}(2) = [] はオッケーです。