Matlab类递增静态数

时间:2012-12-29 16:55:10

标签: arrays matlab object static

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

我该如何实现?

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

由于

2 个答案:

答案 0 :(得分:0)

我知道这只是一个部分解决方案,但假设你有一个矩阵M,其中第一个索引是ID值,那么这就是你可以做的:

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

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

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

答案 1 :(得分: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 ...

中使用了更加天真的基于for的语法