2012-12-29 23 views
0

我已經創建了一個Id屬性的對象。 我想創建一個數組,它將根據數組中的位置或從1開始的靜態遞增int自動填充Id屬性。Matlab類遞增靜態編號

如何實現此目的?

我試圖創建一個id爲輸入的構造函數,但是寫入 myArr(100)= myObj會拋出一個錯誤。 我該如何使用id(使用靜態ID或其他方式)初始化它。

感謝

+1

請從MyObj中的構造後MATLAB錯誤和相關的代碼示例... –

回答

0

我知道這隻能解決部分問題,但假設你有一個矩陣M,其中第一個索引是ID值,那麼這裏就是你可以做什麼:

M(:,1) = 1:size(M,1) 

或者如果你有一個矩陣M,其中第一列需要與ID值補充說:

M = [1:size(M,1) M] 
0
classdef a_class < handle  

properties 
    id 
end 

methods 
    function obj = a_class(size_of_matrix) 

     if nargin == 0 %default constructor 
      %something constant. Do not try to place counter here. 

     else 
      if numel(size_of_matrix)==1 
       size_of_matrix = [size_of_matrix size_of_matrix]; 
      end; 

      obj(size_of_matrix(:)) = a_class; % Preallocate object array 

      id_cell = num2cell(1:prod(size_of_matrix)); 
      [obj(1:prod(size_of_matrix)).id] = id_cell{:}; 

     end 
    end 
end 
end 

我是這是最好的解決方案。

注意你不能在默認構造函數中定義一個計數器,然後分配一個數組,因爲實際上它只會被調用一次。

PS 他們使用更幼稚的,總部設在official tutorial語法...