我面对上面提到的(标题上)错误。 首先,我遇到了“无法调用或索引临时数组”错误。然后我修复它(我想是这样,至少)并发生了一个新的错误。 最初,我写过:
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,:);
现在我想出了“函数的输入参数包括冒号运算符。要输入冒号字符,请使用':'代替。”错误。
我该怎么办?上述哪种方法是正确的(如果有的话)?
提前谢谢!
答案 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]