无法遍历字符串的单元格数组,这是类的常量属性

时间:2014-02-07 08:11:03

标签: string matlab constants cell-array matlab-class

我无法迭代字符串的单元格数组,这是一个类中的常量属性。每当我尝试将单元格数组从1索引到结束时,Matlab就会崩溃。我能做错什么?

代码如下所示:

classdef classA
    properties(Constant)
        ValidElements = {'Elem1', 'Elem2', 'Elem3'};
    end
    properties
        AInfo
    end
    function this = classA(info)
        1stvalidelement = classA.ValidElements{1};
        validelementslist = classA.ValidElements{1:end};
        ...
        ...
        this.AInfo = info;
    end
    ...
end

在构造函数中,第1行执行良好而没有任何问题,但在第2行matlab崩溃。我完全不知道为什么会这样。请帮帮我。

感谢。

1 个答案:

答案 0 :(得分:1)

嗯,首先,你使用花括号,你(可能)意味着使用括号。

比较

>> A = {'one' 'two' 'three'}';
>> A{1:2}
    ans =
        one
    ans =
        two
>> A(2:3)
    ans = 
        'two'
        'three'

不同之处在于,parenthsis(())将返回单元格的一部分作为新单元格,而curlies({})将返回单元格的条目一个(逗号分隔)列表。因此,在这种情况下,大括号返回多个值,您尝试将其分配给单个变量。

另一方面,访问该属性的函数不在(Static)方法块中。

另外,1stvalidelement不是有效的变量名。

因此:

classdef classA
    properties(Constant)
        ValidElements = {'Elem1', 'Elem2', 'Elem3'};
    end
    properties
        AInfo
    end

    method (Static)

        function this = classA(info)
            firstvalidelement = classA.ValidElements{1};
            validelementslist = classA.ValidElements(1:end);
            ...
            ...
            this.AInfo = info;
        end

        ...

    end
end