为什么 Octave 打印 "dimensions mismatch" 而 MATLAB 不打印?
Why does Octave print "dimensions mismatch" whereas MATLAB does not?
我正在尝试 运行 Octave 中的 MATLAB 代码,但卡在了以下位置:
I
是一个空矩阵,尺寸为 0x4,
a = 2;
属于for循环的命令是:
I = [I a];
MATLAB 输出:I = 2
倍频程输出:"horizontal dimensions mismatch (0x4 vs 1x1)"
我找到了解决此错误的方法,但我还想了解:为什么 MATLAB 接受这些不同的维度,而 Octave 却打印错误?
关于空矩阵和扩展它们是否有不同的定义? (特别是因为它不是"normal"空矩阵而是0x4空矩阵?)
Matlab 发出警告,提醒您这将成为未来版本中的错误:
>> I = magic(4);
>> I(1:4,:) = []
I =
Empty matrix: 0-by-4
>> [I 2]
Warning: This concatenation operation includes an empty array with an incorrect number of rows.
Concatenation including empty arrays will require all arrays to have the same number of rows in a future release.
ans =
2
Octave 上的相同代码:
>> I = magic(4);
>> I(1:4,:)=[]
I = [](0x4)
>> [I 2]
error: horizontal dimensions mismatch (0x4 vs 1x1)
所以本质上这是同一个问题,除了 Matlab 暂时允许它并发出警告,并且对于这里实际上是哪个维度有问题提供了更多信息,而 Octave 对此更严格,希望你能理解出来是什么意思。但本质上行为是相同的。
这也是非常合理的行为,因为尝试连接两个不同大小/维度的矩阵更可能来自错误而不是预期行为,即使其中一个数组在此过程中变空,所以 matlab 在这里沿着八度路径走下去是明智的(可以这么说)。
PS。请注意,在这种情况下,[I;2 2 2 2]
之类的代码在两个解释器上都是完全有效且正确的代码:即您正在 垂直 连接一个 4 列矩阵,一行到 4 - 没有行的列矩阵,因此列数是一致的。
我正在尝试 运行 Octave 中的 MATLAB 代码,但卡在了以下位置:
I
是一个空矩阵,尺寸为 0x4,
a = 2;
属于for循环的命令是:
I = [I a];
MATLAB 输出:I = 2
倍频程输出:"horizontal dimensions mismatch (0x4 vs 1x1)"
我找到了解决此错误的方法,但我还想了解:为什么 MATLAB 接受这些不同的维度,而 Octave 却打印错误? 关于空矩阵和扩展它们是否有不同的定义? (特别是因为它不是"normal"空矩阵而是0x4空矩阵?)
Matlab 发出警告,提醒您这将成为未来版本中的错误:
>> I = magic(4);
>> I(1:4,:) = []
I =
Empty matrix: 0-by-4
>> [I 2]
Warning: This concatenation operation includes an empty array with an incorrect number of rows.
Concatenation including empty arrays will require all arrays to have the same number of rows in a future release.
ans =
2
Octave 上的相同代码:
>> I = magic(4);
>> I(1:4,:)=[]
I = [](0x4)
>> [I 2]
error: horizontal dimensions mismatch (0x4 vs 1x1)
所以本质上这是同一个问题,除了 Matlab 暂时允许它并发出警告,并且对于这里实际上是哪个维度有问题提供了更多信息,而 Octave 对此更严格,希望你能理解出来是什么意思。但本质上行为是相同的。
这也是非常合理的行为,因为尝试连接两个不同大小/维度的矩阵更可能来自错误而不是预期行为,即使其中一个数组在此过程中变空,所以 matlab 在这里沿着八度路径走下去是明智的(可以这么说)。
PS。请注意,在这种情况下,
[I;2 2 2 2]
之类的代码在两个解释器上都是完全有效且正确的代码:即您正在 垂直 连接一个 4 列矩阵,一行到 4 - 没有行的列矩阵,因此列数是一致的。