我已經創建了一個Id屬性的對象。 我想創建一個數組,它將根據數組中的位置或從1開始的靜態遞增int自動填充Id屬性。Matlab類遞增靜態編號
如何實現此目的?
我試圖創建一個id爲輸入的構造函數,但是寫入 myArr(100)= myObj會拋出一個錯誤。 我該如何使用id(使用靜態ID或其他方式)初始化它。
感謝
我已經創建了一個Id屬性的對象。 我想創建一個數組,它將根據數組中的位置或從1開始的靜態遞增int自動填充Id屬性。Matlab類遞增靜態編號
如何實現此目的?
我試圖創建一個id爲輸入的構造函數,但是寫入 myArr(100)= myObj會拋出一個錯誤。 我該如何使用id(使用靜態ID或其他方式)初始化它。
感謝
我知道這隻能解決部分問題,但假設你有一個矩陣M,其中第一個索引是ID值,那麼這裏就是你可以做什麼:
M(:,1) = 1:size(M,1)
或者如果你有一個矩陣M,其中第一列需要與ID值補充說:
M = [1:size(M,1) M]
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語法...
請從MyObj中的構造後MATLAB錯誤和相關的代碼示例... –