下标分配维度不匹配 - 覆盖维度

时间:2013-09-16 15:57:43

标签: matlab

我在一个维度上尝试我的数组,但收到错误“Subscripted Assignment Dimension Mismatch”。但是,如果我先创建一个临时变量,我可以执行相同的操作。有没有办法在不创建临时(y)变量的情况下执行此操作?更好的是,有没有办法在没有循环的情况下使用索引向量?

谢谢。

x = zeros(2,5);
idx = [1 2];

% This doesn't work...
% x(idx,:) = [x(idx,:) 1];

% This doesn't work...
% for i=idx
%     x(i,:) = [x(i,:) 1];
% end

% This works...
for i=idx
    y(i,:) = [x(i,:) 1];
end
x = y;

1 个答案:

答案 0 :(得分:1)

错误是因为x(idx,:)的大小为2x5且大小为1x1的1,因此您无法将这两者连接起来。这是我在Octave中得到的错误:

>> [x(idx,:) 1]
error: horizontal dimensions mismatch (2x5 vs 1x1)

但是,你可以这样做:

>> [x(idx,:) ones(length(idx),1)]
ans =

   0   0   0   0   0   1
   0   0   0   0   0   1

你需要一个中间变量(你的y)。