【问题标题】:Subscripted Assignment Dimension Mismatch - Overwrite Dimension下标分配维度不匹配 - 覆盖维度
【发布时间】:2013-09-16 15:57:43
【问题描述】:

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

【问题讨论】:

  • 你想做什么?用一个在一个维度上增长 x?做x = [x ones(size(x,1),1)];

标签: matlab


【解决方案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)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多