MATLAB: How to extract matrix without NaN values

extract matrixfor loopmatrix nan

I have two given matrices A and B in same size 5 x 5
A=[1 3 0 3 5; 2 3 4 1 0; 0 1 3 0 1; 2 4 5 4 4; 5 5 2 0 1]
B=[NaN NaN NaN NaN NaN; 2 3 4 1 NaN; 1 2 2 1 NaN; NaN 4 5 4 4; NaN 4 2 0 0]
How I could extract two sub-matrices of them – let's call them A1 and B1; by that B1 contains only numeric values of B, and A1 contains the corresponded values of A with same allocation index with numeric values of B. They should be like this
A1=[2 3 4 1; 0 1 3 0; 4 5 4 4; 5 2 0 1]
B1=[2 3 4 1; 1 2 2 1; 4 5 4 4; 4 2 0 0]
I tried for loops for a simple solution but it messed up. Thank you for your help~

Best Answer

There should be more elegant method wituhut using loops.
clc; clear all ;
A=[1 3 0 3 5; 2 3 4 1 0; 0 1 3 0 1; 2 4 5 4 4; 5 5 2 0 1]
B=[NaN NaN NaN NaN NaN; 2 3 4 1 NaN; 1 2 2 1 NaN; NaN 4 5 4 4; NaN 4 2 0 0]
A1=[2 3 4 1; 0 1 3 0; 4 5 4 4; 5 2 0 1]
B1=[2 3 4 1; 1 2 2 1; 4 5 4 4; 4 2 0 0]
[m,n] = size(B) ;
A1 = cell([],1) ;
B1 = cell([],1) ;
count = 0 ;
for i = 1:m
idx = ~isnan(B(i,:)) ;
if any(idx)
count = count+1 ;
A1{count,1} = A(i,idx) ;
B1{count,1} = B(i,idx) ;
end
end
% The below works only when each cell has same number of elements
A1 = cell2mat(A1) ;
B1 = cell2mat(B1) ;