我无法迭代字符串的单元格数组,这是一个类中的常量属性。每当我尝试将单元格数组从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崩溃。我完全不知道为什么会这样。请帮帮我。
感谢。
答案 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