How to reshape a vector without knowing the dimensions?
이전 댓글 표시
Hello,
I had a 3d matrix 663x3127x254. I removed NaN's using a mask and now I assume I have less elements on the left most dimension as in vector form:
s = 526593054 x 1, i = 67510073 x 1 (this is my mask, a magnitude lower)
How can I reshape the mask vector into a 3d matrix without knowing the new dimensions?
I am familiar with the function 'reshape' but only when I know the previous dimensions.
here is my code:
i = find(~isnan(s));
s = s(i);
My ultimate goal is to use it for triscatteredinterp.
thanks, Michael
채택된 답변
추가 답변 (3개)
Azzi Abdelmalek
2014년 8월 5일
You needat least, know the first two dimensions, the use
reshape(i,663x3127,[])
but this is not always possible, depending of the size of i
Sean de Wolski
2014년 8월 5일
편집: Sean de Wolski
2014년 8월 5일
If you're using this for TriScatteredInterp, why do you need it as a three d array?
Couldn't you build it from a meshgrid (with corresponding nan points removed)?
% v is your matrix
[xx,yy,zz] = meshgrid(1:size(v,1),1:size(v,2),1:size(v,3));
idx = ~isnan(v);
xxv = xx(idx);
yyv = yy(idx);
zzv = zz(idx);
vv = v(idx);
T = TriScatteredInterp([xxv yyv zzv],vv)
I would also recommend using scatteredInterpolant over TriScattereredInterp if you're on a newer release.
카테고리
도움말 센터 및 File Exchange에서 Discrete Data Plots에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!