是否可以创建“0乘0”矩阵(或数组)?

时间:2014-02-15 22:34:11

标签: matlab

reshape可以创建0-by-1矩阵和1-by-0矩阵:

>> reshape([], [0 1])
ans =
   Empty matrix: 0-by-1
>> reshape([], [1 0])
ans =
   Empty matrix: 1-by-0

reshape还可以为 n >创建 n - 维数组 2,其中至少一个维度为0.例如 1

>> reshape([], [6 0 1 2 1])
ans =
   Empty array: 6-by-0-by-1-by-2

但我没有设法哄reshape生成0-by-0 任何(矩阵或数组,即)。例如

>> reshape([], [0 0])
ans =
     []
>> reshape([], [0 0 1])
ans =
     []

有没有办法生成一个MATLAB以交互方式显示为0-by-0矩阵的实体?

更好的是,有没有办法创建一个实体,MATLAB将以交互方式显示为 m -by- n数组,对于任何非负数整数 m n 2

(我对这个问题的兴趣来自于想要使函数返回的值我在一系列有效的输入参数中写得更加一致,即对用户来说不那么令人惊讶。)


1 请注意,只要它们出现在第二个位置之后,大小1的任何尾随尺寸将被自动删除。

2 更确切地说,我正在寻找一个x,以便(1)isnumeric(x)true; (2)numel(x)为0; (3)在MATLAB提示符下输入x并点击[RETURN]会产生显示的输出 Empty matrix: 0-by-0(或Empty array: 0-by-0)。

2 个答案:

答案 0 :(得分:5)

[]是空0到0矩阵的matlab表示法。你创建了一个0乘0矩阵,它只是以另一种方式显示。

>> size(reshape([], [0 0]))

ans =

     0     0

答案 1 :(得分:2)

我认为zeros(0,0)可以满足您的需求。至少它似乎可以工作,如果您使用size命令询问它,如下所示:

>> size(zeros(0,0))
ans =
      0     0