簡體   English   中英

Matlab:如果矩陣中包含多個特定數量的NaN值,如何刪除矩陣中的所有列

[英]Matlab: How to delete all columns in a matrix if it contains more than some specific number of NaN values

我想刪除所有具有超過一定數量NaN的列(比如5個NaN)。 有沒有辦法沒有循環呢?

無需循環:

matFixed = MAT( :, sum( isnan( MAT ) ) <= 5);

一步步:

nanMat = isnan(MAT); % convert MAT to logical with 1 indicating value is a NAN
nNanInCol = sum(nanMat); %compute the number of NANs in each col
colIdx = nNanInCol <= 5; % determine which columns are "valid"
matFixed = MAT(:, colIdx); % create new matrix using only the good columns of MAT

這很容易:

%# define a matrix with NaNs
A = rand(10); %# 10x10 array
A(A<0.5) = NaN; %# each column contains on average 5 NaNs

%# count NaNs
nanCt = sum(isnan(A),1);

%# remove columns with too many NaNs
A(:,nanCt > 5) = [];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM