如果我输入X = rand(2,3)
then size(X,1)
and size(X,2)
产生预期的结果。如果我输入ndims (X)
我得到了预期的二维。
然而,size(X, k) == 1
, where k
是任意整数> 3。为什么会发生这种情况?
如果要使大小行为保持一致,则必须发生这种情况。我们认为向量的大小为 1xn 或 nx1。当然方向很重要,否则 MATLAB 可以简单地告诉您向量的长度为 n。在后一种情况下,存在一个尾随单例维度,因此隐式地存在无限多个尾随单例维度。所以列向量的大小实际上是 nx1x1x1...,行向量的大小是 1xnx1x1...
标量也是如此。如果标量的大小为 1x1,那么它的大小实际上必须为 1x1x1x1x...
不过,尺寸必须告诉你物体的大小,以及它应该停在哪里?我想如果您要从头开始重新设计 MATLAB,您可能会决定不报告任何尾随单例维度。那么列向量将被报告为维度 n,但行向量的维度为 1xn?老实说,我实际上更喜欢被告知列向量的维度为 nx1。但逻辑上它的维度必须是 nx1x1x1...
无论如何,很久以前 MATLAB 不允许您在数组中进行超出二维的索引。高维数组已经存在至少 20 年左右了,但仍有许多遗留代码仍然有用。 (我有 25 多年前编写的代码,现在仍在使用。)您不想破坏现有代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)