【总结】matlab删除整行或整列
(2013-07-25 08:43:29)
标签:
matlabit |
分类: 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:按列操作。
前一篇:【总结】matlab求极值的方法