1

我在遍历一个字符串单元数组时遇到了麻烦,这是一个类中的常量属性。每次我尝试从 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

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

谢谢。

4

1 回答 1

1

好吧,一方面,您在(可能)打算使用括号的地方使用花括号。

相比

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

不同之处在于括号 ( ()) 将单元格的一部分作为新单元格返回,而 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
于 2014-02-07T08:21:01.477 回答