【发布时间】:2017-08-18 11:26:56
【问题描述】:
我无法理解我刚刚发现的 Matlab 的行为。代码如下:
ix = logical([1; 0; 1]);
value = [2; 2; 2];
newValue(ix) = value(ix)
输出
2 0 2
在我期待的时候
2
0
2
我可以通过在我的代码前添加newValue = nan(size(value)) 来“纠正”它。但我想了解为什么 Matlab 从列向量创建一行。
【问题讨论】:
-
我也不知道为什么,但是你可以使用
newValue(ix,:) = value(ix)得到你想要的结果(如果newValue不存在,否则你应该像你一样初始化它)。 -
@Zep,问题是我希望我的函数的输出具有与输入相同的维度(例如内置的
sin)。但是,如上所述,如果没有预分配,它就不起作用。它不起作用的事实表明我错过了关于 Matlab 中尺寸的一些基本知识。所以它让我困惑,从第一原则:) -
我认为@Théo P. 回答了你:Matlab 默认创建行。如果您想要一列,请预先分配或在索引中指定它 (
newValue(ix,:))。