Matlab 是否可以创建一个;“0乘0”;矩阵(或数组)?
Matlab 是否可以创建一个;“0乘0”;矩阵(或数组)?,matlab,Matlab,重塑可以创建0-by-1矩阵和1-by-0矩阵: >> reshape([], [0 1]) ans = Empty matrix: 0-by-1 >> reshape([], [1 0]) ans = Empty matrix: 1-by-0 重塑还可以为n>2创建一个n维数组,其中至少有一个维度为0。例如1 但我没有设法说服重塑以产生0乘0任何东西(即矩阵或数组)。比如说 >> reshape([], [0 0]) ans = []
重塑
可以创建0-by-1
矩阵和1-by-0
矩阵:
>> reshape([], [0 1])
ans =
Empty matrix: 0-by-1
>> reshape([], [1 0])
ans =
Empty matrix: 1-by-0
重塑
还可以为n>2创建一个n维数组,其中至少有一个维度为0。例如1
但我没有设法说服重塑
以产生0乘0
任何东西(即矩阵或数组)。比如说
>> reshape([], [0 0])
ans =
[]
>> reshape([], [0 0 1])
ans =
[]
有没有办法生成MATLAB将交互显示为0-by-0
矩阵的实体
更好的是,对于任何非负整数m和n?2,有没有一种方法可以创建一个实体,让MATLAB以交互方式显示为一个m-by-n数组
(我之所以对这个问题感兴趣,是因为我想让我正在编写的函数返回的值在有效输入参数范围内更加一致,即对用户来说不那么令人惊讶。)
1请注意,只要尺寸为1的任何后续尺寸标注出现在第二个位置之后,它们是如何自动删除的 2更准确地说,我正在寻找一个
x
,这样(1)isnumeric(x)
就是true
;(2) numel(x)
为0;(3)在MATLAB提示符下键入x
,点击[RETURN]
生成显示的输出空矩阵:0-by-0
(或空数组:0-by-0
)。我认为零(0,0)
可以满足您的需要。至少,如果您使用size
这样的命令来询问它,它似乎是有效的:
>> size(zeros(0,0))
ans =
0 0
[]
是空的0×0矩阵的matlab表示法。您创建了一个0乘0的矩阵,它只是以另一种方式显示
>> size(reshape([], [0 0]))
ans =
0 0
重塑([],[0])
返回[]
哪个大小([])
是[0]-一个0乘0
矩阵。你已经明白了?您在寻找什么?另外,sparse([])
和spalloc(0,0,0)
将在命令窗口中显示为“全部零稀疏:0-by-0”。稀疏空数组是否更空?;-)关于您关于尾随单态维度的脚注,请参阅和文档。@thewaywewalk:我添加了第二个脚注,希望能回答您的问题。@kjo:关于您的脚注:3)不可能。只有一种类型的0-by-0数组,它显示为[]
并且大小([])
显示默认情况下[]
为0x0,您甚至不需要重塑
>> size(reshape([], [0 0]))
ans =
0 0