我在一个维度上尝试我的数组,但收到错误“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;
答案 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
)。