size()返回1,其中矩阵维度不应存在

use*_*ica 2 matlab

如果键入X = rand(2,3)然后size(X,1)size(X,2)产生预期的结果.如果我输入,ndims (X)我会得到预期的两个维度.

但是,size(X, k) == 1哪里k是任何整数> 3.为什么会出现这种情况?

小智 7

如果大小的行为要保持一致,则必须发生这种情况.我们想到一个大小为1xn或nx1的向量.当然,方向很重要,否则MATLAB可以简单地告诉你向量的长度为n.在后一种情况下,存在一个尾随单例维度,因此隐含地存在无限多个尾随单例维度.所以列向量的大小实际为nx1x1x1 ...,行向量的大小为1xnx1x1 ...

标量也是如此.如果标量大小为1x1,那么它的大小必须是1x1x1x1x ...

大小必须告诉你对象的大小,它应该停在哪里?我想如果你从头开始重新设计MATLAB,你可能决定不报告任何尾随单例维度.因此,列向量将报告为维度n,但行向量的维度为1xn?说实话,我实际上更喜欢被告知列向量具有维度nx1.但它必须在逻辑上具有维度nx1x1x1 ...

无论如何,很久以前MATLAB不允许你在数组中超出两个维度.高维数组已经存在至少20年左右,但仍有许多遗留代码仍然有用.(我有25年前编写的代码,但仍在使用中.)您不想破坏现有代码.