Clear Filters
Clear Filters

Deleting missing values (different amount and distribution of NaNs for each column)

1 view (last 30 days)
I have two matrices of the same size (17x82). Matrix A has no missing values. Matrix B has a different amount and distribution of NaNs for each column. I want to delete all missing values from matrix B as well as the values of matrix A that correspond to the NaNs of matrix B.
I tried: A_Without_NaN = A(~isnan(B)); However, reshaping does not work because the number of NaNs in matrix B varies for each column.
Any suggestions? Thanks in advance, Peter

Accepted Answer

Jos (10584)
Jos (10584) on 20 Dec 2017
You cannot concatenate different length vectors into a single matrix. You could store each column of A into a separate cell
A_wn = arrayfun(@(k) A(~isnan(B(:,k)),k),1:size(A,2),'un',0)
% A_wn is a cell array. The k-th cell, A_wn{k}, holds the
% 'relevant' values of the k-th column of A
However, it might be preferred to leave the nans and use nan-specific functions like nansum and nanmean.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!