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

matrix manipulation

I have two matrices of the same size (17×82). 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

Best Answer

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.