0

我创建了一个具有 Id 属性的对象。我正在尝试创建一个数组,它将根据数组中的位置或从 1 开始的静态递增 int 自动填充 Id 属性。

我该如何实施?

我试图创建一个以 id 作为输入的构造函数,但编写 myArr(100) = myObj 会引发错误。我如何也用 id 初始化它(使用静态 id 或任何其他方式)。

谢谢

4

2 回答 2

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 他们在官方教程中使用了更加幼稚的基于 for 的语法......

于 2012-12-30T09:11:02.850 回答
0

我知道这只是部分解决方案,但假设您有一个矩阵 M,其中第一个索引是 ID 值,那么您可以执行以下操作:

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

或者,如果您有一个矩阵 M,其中第一列需要添加 ID 值:

M = [1:size(M,1) M]
于 2012-12-29T20:04:33.670 回答