立即注册 登录
气象家园 返回首页

www237036的个人空间 http://bbs.06climate.com/?10127 [收藏] [复制] [分享] [RSS]

日志

any, all, nanmean, squeeze

已有 642 次阅读2013-5-27 19:03 | all

1)any(A,dim),返回矩阵A的dim维是否有非零值,如有非零,返回逻辑1,若全为0,返回逻辑0

此命令可用于判断、修改、删除全零行或全零列,例如

A=rand(5,5);

A([1,3],:)=0;

A(1,4)=1

A =

         0         0         0    1.0000         0
    0.3112    0.6541    0.2290    0.9961    0.0046
         0         0         0         0         0
    0.1656    0.7482    0.1524    0.4427    0.8173
    0.6020    0.4505    0.8258    0.1067    0.8687

这样A就是一个第三行全为0,第1行有一个不为零的矩阵

b=any(A,2)


b =

     1
     1
     0
     1
     1

正确判断出A的第三行全为零

A=A(b,:)

A=A(b,:)

A =

         0         0         0    1.0000         0
    0.3112    0.6541    0.2290    0.9961    0.0046
    0.1656    0.7482    0.1524    0.4427    0.8173
    0.6020    0.4505    0.8258    0.1067    0.8687

简单来写就是A=A(any(A,2),:),即可除去全零行,A=A(:,any(A,1)),可以除去全零列

2)all(A,dim) ,返回逻辑值判断A的dim维是否全是非零值,若是返回逻辑1,若有零值,返回逻辑0。用法与any类似,不再赘述

3) nanmean

A=nanmean(A,dim) 返回矩阵A沿dim维中非NAN数的均值,应用如下

A=ones(4);

A(:,2)=0

A =

     1     0     1     1
     1     0     1     1
     1     0     1     1
     1     0     1     1

想要计算A每行非0数的均值,即可

A(A==0)=nan

A =

     1   NaN     1     1
     1   NaN     1     1
     1   NaN     1     1
     1   NaN     1     1
B=nanmean(A,2)

B =

     1
     1
     1
     1
将不想要的数设为NAN,然后用nanmean做平均,可以很方便的得到想要的均值

 

4)squeeze 高维矩阵降维

A=rand(3,4,2);

B=A(1,1,:)

B(:,:,1) =

    0.0497


B(:,:,2) =

    0.4039
此时B依旧为[1,1,2]的3维数组

而C=squeeze(A(1,1,:))

C =

    0.0497
    0.4039

成功降维

 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

返回顶部