为什么倍频程打印“尺寸不匹配”,而MATLAB不打印?

为什么倍频程打印“尺寸不匹配”,而MATLAB不打印?,matlab,matrix,octave,dimensions,Matlab,Matrix,Octave,Dimensions,我试图在倍频程中运行MATLAB代码,但遇到以下问题: I是一个空矩阵,维数0x4 a = 2; 属于for循环的命令是: I = [I a]; MATLAB输出:I=2 倍频程输出:水平尺寸不匹配0x4 vs 1x1 我已经找到了解决这个错误的方法,但我也想理解:为什么MATLAB接受这些不同的维度,而Octave打印错误? 关于空矩阵和扩展空矩阵有不同的定义吗?特别是因为它不是一个普通的空矩阵,而是一个0x4空矩阵?Matlab会发出警告,提醒您这将成为未来版本中的错误: >>

我试图在倍频程中运行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
八度音阶上的相同代码:

>> I = magic(4);
>> I(1:4,:)=[]
I = [](0x4)

>> [I 2]
error: horizontal dimensions mismatch (0x4 vs 1x1)

所以本质上这是同一个问题,除了Matlab允许它暂时发出警告外,它提供的信息稍微多一些,关于哪个维度实际上是错误的,而octave对它更严格,希望你明白它的意思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
八度音阶上的相同代码:

>> I = magic(4);
>> I(1:4,:)=[]
I = [](0x4)

>> [I 2]
error: horizontal dimensions mismatch (0x4 vs 1x1)

所以本质上这是同一个问题,除了Matlab允许它暂时带有警告,并且对于哪个维度是错误的信息稍微多一些,而octave对它的要求更严格,希望你明白这意味着什么,这是因为程序员这样做了:将空矩阵连接到向量对生成的向量没有影响。在这种情况下,将忽略空矩阵:。Octave,我找不到类似的文章。@Jeon,那是因为程序员写了类似的文章,我找不到类似的文章。对于MATLAB和Octave之间行为不同的原因,我没有提供任何信息。不管是谁否决了这一点:是否愿意解释为什么这个问题没有显示任何研究成果、不清楚或没有用处?这是因为程序员做出了这样的决定将空矩阵连接到向量对生成的向量没有影响。在这种情况下,将忽略空矩阵:。Octave,我找不到类似的文章。@Jeon,那是因为程序员写了类似的文章,我找不到类似的文章。对于MATLAB和Octave之间行为不同的原因,我没有提供任何信息。不管是谁否决了这一点:是否愿意解释为什么这个问题没有显示任何研究成果、不清楚或没有用处?您是否在R2016b上?我没有收到R2016a中的警告。不可否认,我在2013b上。虽然matlab不跟进这样一个被弃用的警告是很奇怪的。。。你在终端上没有收到上面代码的任何信息吗?我也在R2016a中,没有收到警告。我发现R2016a中仍然有警告。嗯,这很有趣,也许Mathworks现在把它当作一个特例处理?我想知道为什么。。。可能有很多黑客遗留代码会被破解?你在R2016b上吗?我没有收到R2016a中的警告。不可否认,我在2013b上。虽然matlab不跟进这样一个被弃用的警告是很奇怪的。。。你在终端上没有收到上面代码的任何信息吗?我也在R2016a中,没有收到警告。我发现R2016a中仍然有警告。嗯,这很有趣,也许Mathworks现在把它当作一个特例处理?我想知道为什么。。。可能有很多黑客遗留代码会被破解?