在MatLab/Octave中有自动压缩的机制吗 [英] Is there any mechanism to auto squeeze in Matlab / Octave

查看:0
本文介绍了在MatLab/Octave中有自动压缩的机制吗的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于ND数组,能够自动压缩以删除单个维度将是很好的。有没有什么办法可以做到这一点,我不知道?这对于聚合函数(例如SUM、Mean等)尤其有用,因为在这些聚合函数中,您总是希望得到维度更少的结果。

这里有一个简单的例子:

>> A = ones(3,3,3);
>> B = mean(A);
>> size(B)
ans =  
   1   3   3

>> squeeze(B)
ans =
   1   1   1
   1   1   1
   1   1   1

如果MatLab/Octave能自动为我压缩,那就太好了。或者是否有打开该选项的方法(类似于绘图的hold on)。

推荐答案

据我所知,MatLab没有。我不认为这是个好主意。考虑一下您的示例的修改版本:

>> A = ones(3,1,1,3);
>> B = mean(A);
>> size(B)
ans =
     1     1     1     3

自动挤压在这里应该做什么?将B缩小到[1 1 3][1 3]

  • 您可能会争辩说,它应该删除mean已变成单例的相同维度。但是,它必须在函数内完成,可能需要使用一个可选的输入参数。获取函数输出后,如何获取没有任何信息。

  • 或者您可以争辩说,它应该删除所有单个维度,就像squeeze(或多或少)所做的那样。但随后它将删除函数输入中已经是单个的维度,这可能是不需要的。

如果您问我,在squeeze中有一个第二个输入指定要删除的(单一)维度将是一个很好的补充(就像您可以使用mean(A, 1)强制沿第一个维度应用操作一样,即使A恰好是行向量)。

这篇关于在MatLab/Octave中有自动压缩的机制吗的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆