How to reshape a vector without knowing the dimensions?
Mostrar comentarios más antiguos
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
Respuesta aceptada
Más respuestas (3)
Azzi Abdelmalek
el 5 de Ag. de 2014
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
el 5 de Ag. de 2014
Editada: Sean de Wolski
el 5 de Ag. de 2014
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.
Michael
el 6 de Ag. de 2014
0 votos
Categorías
Más información sobre Discrete Data Plots en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!