3

オブジェクトの配列を作成しましたが、for ループを使用せずにベクトル演算でプロパティ値を割り当てたいと考えています。残念ながら、エラーが発生します。

問題の簡単な例。

classdef clsMyClass < handle
   properties 
      dblMyProperty1
   end 
   methods
        function obj = clsMyClass()
        end      
   end
end 

そして走るとき

vecMyArray = clsMyClass.empty(100,0);
vecMyArray(100) = clsMyClass;    
vecMyArray.dblMyProperty1 = 1:100;    

次のエラーが表示されます。

??? ドット名の割り当てで右側の要素の数が正しくありません。左側の [] の欠落が原因である可能性があります。

どんな助けでも大歓迎です。

4

3 に答える 3

1

あなたが今何をしようとしているのか分かります。disperseMATLAB File Exchange から使用します。

>> [vecMyArray.dblMyProperty1] = disperse(1:100);
>> vecMyArray(1).dblMyProperty1
ans = 
    1
>> vecMyArray(10).dblMyProperty1
ans = 
    10
于 2013-06-14T21:16:18.183 に答える
1

dealまさにこの目的のために関数を使用できます。

[vecMyArray.dblMyProperty1] = deal(1:100);

参照: http://www.mathworks.com/company/newsletters/articles/whats-the-big-deal.html


編集:いいえ、実際にはできません。これにより、すべてのベクトルが 1:100 に設定されます。

于 2013-06-14T17:46:08.780 に答える