Matlab squeeze函数

Squeeze函数

一.Matlab 官方help(看不懂官方的没关系,后面我会通俗点讲):

squeeze Remove singleton dimensions.
    B = squeeze(A) returns an array B with the same elements as
    A but with all the singleton dimensions removed.  A singleton
    is a dimension such that size(A,dim)==1.  2-D arrays are
    unaffected by squeeze so that row vectors remain rows.
 
    For example,
        squeeze(rand(2,1,3))
    is 2-by-3.
 
    See also shiftdim.

    Reference page for squeeze
    Other functions named squeeze

二.通俗易懂点讲

作用:删除单一维度,矩阵压缩,其实就是删除这些单一维度,可以这样理解,一个2*3*4*1*5*1*6(7维)这种维度数组表示的元素数量和2*3*4*5*6(5维)数组一样,那我为啥要用7维的?我同样可以用剩下维度的索引唯一标识数据,并且还降低了维度。

语法:

B = squeeze(A)

解释:B = squeeze(A) 返回元素与 A 相同但删除了所有单一维度的数组 B。单一维度是指 size(A,dim) = 1 的任意维度。二维数组不受 squeeze 的影响;如果 A 是一个行或列向量或者标量 1×1 值,则 B = A。

简单来说就是在矩阵中若某一个维度是1,其实我们可以将此矩阵压缩,比方说一个2(行)*1(列)*3的数组,因为列是单一维度,这种数组我们完全没有必要为存3个2行*1列的数据多开一个维度,类似3维数组,其实只需要一个大小为2*3的二维数组完全可以储存。

demo:

A=rand(2,1,3); %类似一个三维数组,每一维大小分别是3,2,1
B=squeeze(A);  %压缩数组,因为你像既然最后一个维度是1,我为啥不直接并到上一维去呢
%比如说a(1,1,1)=1 a(1,2,1)=2,你会发现用a(1,1)和a(1,2)同样能唯一索引到1和2
%所以之前的很重复

>> A

A(:,:,1) =

    0.7343
    0.4680


A(:,:,2) =

    0.8960
    0.7297


A(:,:,3) =

    0.0165
    0.2248

>> B

B =

    0.7343    0.8960    0.0165
    0.4680    0.7297    0.2248

 

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值