0

我在单一维度中尝试我的数组,但收到错误“下标分配维度不匹配”。但是,如果我先创建一个临时变量,我可以执行相同的操作。有没有办法在不创建临时(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;
4

1 回答 1

1

错误是因为x(idx,:)大小为 2x5 和1大小为 1x1,因此您不能将两者连接起来。这是我在 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)。

于 2013-09-16T16:12:06.660 回答