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のサイズの論理配列を作成する必要があります。