我创建了一个具有 Id 属性的对象。我正在尝试创建一个数组,它将根据数组中的位置或从 1 开始的静态递增 int 自动填充 Id 属性。
我该如何实施?
我试图创建一个以 id 作为输入的构造函数,但编写 myArr(100) = myObj 会引发错误。我如何也用 id 初始化它(使用静态 id 或任何其他方式)。
谢谢
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 他们在官方教程中使用了更加幼稚的基于 for 的语法......
我知道这只是部分解决方案,但假设您有一个矩阵 M,其中第一个索引是 ID 值,那么您可以执行以下操作:
M(:,1) = 1:size(M,1)
或者,如果您有一个矩阵 M,其中第一列需要添加 ID 值:
M = [1:size(M,1) M]