1D論理ベクトル、セル配列、および割り当てたい文字列値があります。
「cell{logical}= string」を試しましたが、次のエラーが発生します。
The right hand side of this assignment has too few values to satisfy
the left hand side.
解決策はありますか?
実際にを使用する必要はありませんdeal
。
a = cell(10,1); % cell array
b = rand(1,10)>0.5; % vector with logicals
myString = 'hello'; % string
a(b) = {myString};
最後の行を見てください。左側では、セルのサブセットを選択してa
おり、右側のセル(文字列を含むセル)とすべて同じである必要があると言っています。
あなたはこれを試すことができます
a = cell(10,1); % cell array
b = rand(1,10)>0.5; % vector with logicals
myString = 'hello'; % string
[a{b}] = deal(myString);
結果は次のようになります。
a =
'hello'
[]
[]
'hello'
'hello'
[]
'hello'
'hello'
[]
[]
別の解決策は
a = cell(10,1);
a([1,3]) = {[1,3,6,10]}
これは不要な追加のように思われるかもしれませんが、長さ1e8の1Dセル配列内の3つのセルにベクトルを割り当てたいとします。論理を使用する場合、これには、ほぼ100Mbのサイズの論理配列を作成する必要があります。