MATLAB错误:函数的输入参数包括冒号运算符。要输入冒号字符,请使用':'代替

时间:2015-12-04 10:01:58

标签: matlab

我面对上面提到的(标题上)错误。 首先,我遇到了“无法调用或索引临时数组”错误。然后我修复它(我想是这样,至少)并发生了一个新的错误。 最初,我写过:

Y = eye(num_labels)(y,:);

此处出现“无法调用或索引到临时数组”错误。我将代码更改为:

Y = subsref(eye(num_labels),struct('type','()','subs',{{y,:}}));

现在,我必须在冒号运算符(':')所在的列上解决“意外的MATLAB运算符”错误。

我决定再将我的代码更改为:

 paren = @(x, varargin) x(varargin{:});
 curly = @(x, varargin) x{varargin{:}};
 Y = paren(eye(num_labels),y,:);

现在我想出了“函数的输入参数包括冒号运算符。要输入冒号字符,请使用':'代替。”错误。

我该怎么办?上述哪种方法是正确的(如果有的话)?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

当使用subsref时,你不能使用冒号运算符,你必须传递字符串':',它将被subsref评估给冒号运算符:

Y = subsref(eye(num_labels),struct('type','()','subs',{{y,':'}}));

除非您被迫使用单行解决方案,否则请使用两行和一个临时变量:

Y = eye(num_labels)
Y = Y(y,:)

如果这是您的真实代码而不仅仅是简化示例,您还可以使用:

Y=[1:num_labels==y]