加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【总结】matlab删除整行或整列

(2013-07-25 08:43:29)
标签:

matlab

it

分类: matlab
案例1:如何去掉矩阵中所有全为0的列,形成新的矩阵
思想1:假如这一列的数字的绝对值相加全为0,那么这一列就全为0。

语句如下:A(:,find(sum(abs(A),1)==0))=[];


思想2:将每一列单独处理,将这一列与另外一个全为0的一列数组作比较。如果两列相同,则删除这一列。
代码1: N = size(a);

  i = 1;
while (i < N(2)) % N(2)是矩阵a的列数
tmp = a(:, i);
if tmp == zeros(size(tmp))
a(:, i) = []; % 删除全部为0的一列
N = size(a); % 更新N(2)
else
i = i + 1; % 下一列
end
end

代码2:


        for  i= 列数:-1:1
b = uniqe(a(:,i));
if mean(b) == 0
a(:,i) =[];
end
end


案例2:如何删除数组中全为空NAN的行

代码:A(all(arrayfun(@isnan,A),2),:) = [];

其中arrayfun函数的意思是:对于数组,将一个函数应用于数组的每一个元素。isnan是用于判断元素是否为NAN的函数。

all函数:判断一个数组的元素是否全为非0。 

B= all(A, dim)根据dim的值进行特定要求的操作。例如dim=1,按行操作;dim = 2:按列操作。




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有