簡體   English   中英

為什么 Octave 打印“尺寸不匹配”而 MATLAB 不打印?

[英]Why does Octave print “dimensions mismatch” whereas MATLAB does not?

我正在嘗試在 Octave 中運行 MATLAB 代碼,但遇到了以下問題:

I是一個空矩陣,維度為 0x4,

a = 2;

屬於 for 循環的命令是:

I = [I a];

MATLAB 輸出: I = 2

八度輸出:“水平尺寸不匹配(0x4 vs 1x1)”

我找到了解決此錯誤的方法,但我也想了解:為什么 MATLAB 接受這些不同的維度,而 Octave 會打印錯誤? 關於空矩陣和擴展它們是否有不同的定義? (特別是因為它不是一個“正常”的空矩陣,而是一個 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 暫時允許它發出警告,並且關於哪個維度實際上有問題的信息稍微多一些,而八度音程對此更嚴格,希望你弄清楚它的意思😛 . 但本質上,行為是相同的。

這也是非常合理的行為,因為嘗試連接兩個不同大小/維度的矩陣更有可能來自錯誤而不是預期行為,即使其中一個數組在此過程中變為空,因此 matlab 是明智的在這里走八度音程(可以這么說)。


附注。 請注意,在這種情況下,像[I;2 2 2 2]代碼在兩個解釋器上都是完全有效且正確的代碼:即,您將具有一行的 4 列矩陣垂直連接到沒有行的 4 列矩陣,因此列數是一致的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM