Matlab - guardar en una matriz vectores de diferente longitud

 
Vista:

guardar en una matriz vectores de diferente longitud

Publicado por david cabanero (2 intervenciones) el 24/03/2015 18:32:16
Hola buenas!

Soy algo nuevo en esto de Matlab y espero que me podais resolver esta dudilla.
Tengo una matriz tridimensional (M§D_Data2) de 1737*2*16 valores. He creado un bucle para que filtre el ruido de la senal y despues me localize los picos para cada uno de los 16 vectores de la matriz.
Mi problema es que quiero guardar los picos localizados en una nueva matriz (LOC) para posteriormente utilizarlos, pero como tiene longitudes diferentes en cada iteracion, pues me da error. Se os ocurre alguna manera de solucionarlo??
Dejo aqui el codigo:

%Sacar el valor del primer numero de todas las medidas
firstval=(M3D_Data2(1,1,:));
%hacer la media de esos valores (aunque son iguales)
mfirstval=mean(firstval);
%Sacar el valor del ultimo numero de todas las medidas
lastval=(M3D_Data2(size (M3D_Data2,1),1,:));
%hacer la media de esos valores (aunque son iguales)
mlastval=mean(lastval);
%hacer la resta y dividirlo entre el numero de espacios, para saber la
%distancia entre dos medidas consecutivas
distance=(mfirstval-mlastval)/(size(M3D_Data2,1)-1);
LOC=zeros();
IC1=zeros(20,16);
%%%% Aqui lo importante
for i=1:1: size (M3D_Data2,3)

W=M3D_Data2(:,1,i); %ABAp1a0 es lo que tendra que ir variando
I=M3D_Data2(:,2,i); %Todo esto deberia de entrar dentro del bucle
IC=sgolayfilt(I,6,41);
[find,loc]=findpeaks(IC,'minpeakdistance',5,'minpeakheight',-0.1,'threshold',0.00001);
%loc 2 para cambiar la linea de base de posiciones a la escala actual
%(649-3997 cm-1)
loc2=((loc*(distance))+mlastval);
%loc 3 para invertir la posicion de los picos localizados, ya que lo
%hacia inversamente.
loc3=(loc2-(mfirstval-((mfirstval-loc2)*2)))+mlastval;
IC1(:,i)=IC;
LOC(:,i)=loc3;
end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

guardar en una matriz vectores de diferente longitud

Publicado por JESUS (1818 intervenciones) el 03/04/2015 10:01:23
Hola en ese caso te recomiendo trabajar con variable tipo cell
ejemplo:
A{1}=[ 1 2 3 4];
A{2}=[1 2 3];
A{3}=1;
si quieres extraer la tercera columna de la fila uno de A entonces A{1}(3)
esos números los puedes reemplazar por tu variable de iteración
éxitos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar