From your description, I suspect the simple fact that it is an asterisk doesn't actually matter. The code below will find all cell positions where there is a char and replace them by NaN. Then you have three options: loop through all indices you found, do some clever indexing, or replicate a shifted array. I went with the third (the first is easiest to implement boundary conditions, the second should scale best for large arrays, and the third is a bit of a middle ground).
clc
C = {1.1 pi '*' ; 3 '*' 2.2 ; 1 5 9};
tf = cellfun('isclass', C,'char');
C(tf)={NaN};
A=cell2mat(C)
[r,c]=find(tf);
A_row_shift_up= circshift(A,-1,1);
A_row_shift_up(end,:)=NaN;
A_row_shift_down=circshift(A, 1,1);
A_row_shift_down(1,:)=NaN;
A(tf)=mean(cat(3,A_row_shift_up(tf),A_row_shift_down(tf)),3,'omitnan')
0 Comments
Sign in to comment.