Problemas con "find" o algo que no entiendo.
Publicado por Llanhelo (3 intervenciones) el 18/10/2011 17:53:06
[b]Hola[b], tengo un problema desagradable, "creo" que con el comando "find".
En resumen mi codigo es el siguiente,
___________________________________________________________________________
clear all
for i=18:.09:45
file_lab = ['/media/4461A96901098325/DOCUMENTOS/Ramos_2011/Material_Tesis/Data/Perfiles/Perfiles_l
ab3/lab_',num2str(i)];
file_icd = ['/media/4461A96901098325/DOCUMENTOS/Ramos_2011/Material_Tesis/Data/Perfiles/Perfiles_ic
d3/icd_',num2str(i)];
file_moho = ['/media/4461A96901098325/DOCUMENTOS/Ramos_2011/Material_Tesis/Data/Perfiles/Perfiles_M
oho3/moho_',num2str(i)];
file_topobat = ['/media/4461A96901098325/DOCUMENTOS/Ramos_2011/Material_Tesis/Data/Perfiles/Perfiles_t
opobat3/topobat_',num2str(i)];
lab = load(file_lab);
icd = load(file_icd);
moho = load(file_moho);
topobat = load(file_topobat);
lon_lab = lab(:,1);
zgeom_lab = -lab(:,3);
lon_icd = icd(:,1);
zgeom_icd = -icd(:,3);
lon_moho = moho(:,1);
zgeom_moho = -moho(:,3);
lon_topobat = topobat(:,1);
zgeom_topobat = topobat(:,3);
vp = [min(zgeom_topobat):0.1:max(zgeom_lab)]';
z = nan(length(vp),length(lon_lab));
%%%%% PROBLEMA %%%%%%%%%%
for j=1:length(zgeom_lab)
vec = [zgeom_topobat(j):0.1:zgeom_lab(j)]';
z(find(vp == vec(1)):length(vp),j) = vec;
end
%%%%%%%%%%%%%%%%%%%%%%%%
end
____________________________________________________________________________
Tal como lo señalo en el codigo, el problema se encuentre al interior del bucle for.
Si corro el codigo completo, el error que arroja es:
-----------------------------------------------------------------------------------
??? Subscripted assignment dimension mismatch.
-----------------------------------------------------------------------------------
y eso es debido a que la parte:
---------------------------------------------------
z(find(vp == vec(1)):length(vp),j) = vec;
----------------------------------------------------
, el find no encuentra el numero "vec(1)" en el vector columna "vp".
Hasta el momento he hecho varios test y veo que mi vector "vp", para i=1, es decir para el primera corrida del bucle for princial, tiene elementos de -4 hasta 8, con incremento de 0.1.
En concreto,
find(vp==5.8) , arroja:
ans = Empty matrix: 0-by-1
es decir, dice que no hay un valor 5.8 en vp. Les aclaro que 5.8, Si esta en vp. Lo extraño es que si busco el valor como : 4.4, 2.3, etc me arroja el indice que busco. pero con algunos, como el 5.8 y otros mas, me dice que no estan en el vector "vp". No hay repeticion de ningun valor en "vp", es decir, cada valor es unico dentro del vector vp.
Si me pueden ayudar, estaré muy agradecido.
Saludos,
Pd: disculpen si no se entiende mucho.
Pd2: los datos cargados fueron previamente formateados, y en este caso los datos que estudiamos con, %6.1f, es decir, con un ancho de 6 mas una cifra significativa.
En resumen mi codigo es el siguiente,
___________________________________________________________________________
clear all
for i=18:.09:45
file_lab = ['/media/4461A96901098325/DOCUMENTOS/Ramos_2011/Material_Tesis/Data/Perfiles/Perfiles_l
ab3/lab_',num2str(i)];
file_icd = ['/media/4461A96901098325/DOCUMENTOS/Ramos_2011/Material_Tesis/Data/Perfiles/Perfiles_ic
d3/icd_',num2str(i)];
file_moho = ['/media/4461A96901098325/DOCUMENTOS/Ramos_2011/Material_Tesis/Data/Perfiles/Perfiles_M
oho3/moho_',num2str(i)];
file_topobat = ['/media/4461A96901098325/DOCUMENTOS/Ramos_2011/Material_Tesis/Data/Perfiles/Perfiles_t
opobat3/topobat_',num2str(i)];
lab = load(file_lab);
icd = load(file_icd);
moho = load(file_moho);
topobat = load(file_topobat);
lon_lab = lab(:,1);
zgeom_lab = -lab(:,3);
lon_icd = icd(:,1);
zgeom_icd = -icd(:,3);
lon_moho = moho(:,1);
zgeom_moho = -moho(:,3);
lon_topobat = topobat(:,1);
zgeom_topobat = topobat(:,3);
vp = [min(zgeom_topobat):0.1:max(zgeom_lab)]';
z = nan(length(vp),length(lon_lab));
%%%%% PROBLEMA %%%%%%%%%%
for j=1:length(zgeom_lab)
vec = [zgeom_topobat(j):0.1:zgeom_lab(j)]';
z(find(vp == vec(1)):length(vp),j) = vec;
end
%%%%%%%%%%%%%%%%%%%%%%%%
end
____________________________________________________________________________
Tal como lo señalo en el codigo, el problema se encuentre al interior del bucle for.
Si corro el codigo completo, el error que arroja es:
-----------------------------------------------------------------------------------
??? Subscripted assignment dimension mismatch.
-----------------------------------------------------------------------------------
y eso es debido a que la parte:
---------------------------------------------------
z(find(vp == vec(1)):length(vp),j) = vec;
----------------------------------------------------
, el find no encuentra el numero "vec(1)" en el vector columna "vp".
Hasta el momento he hecho varios test y veo que mi vector "vp", para i=1, es decir para el primera corrida del bucle for princial, tiene elementos de -4 hasta 8, con incremento de 0.1.
En concreto,
find(vp==5.8) , arroja:
ans = Empty matrix: 0-by-1
es decir, dice que no hay un valor 5.8 en vp. Les aclaro que 5.8, Si esta en vp. Lo extraño es que si busco el valor como : 4.4, 2.3, etc me arroja el indice que busco. pero con algunos, como el 5.8 y otros mas, me dice que no estan en el vector "vp". No hay repeticion de ningun valor en "vp", es decir, cada valor es unico dentro del vector vp.
Si me pueden ayudar, estaré muy agradecido.
Saludos,
Pd: disculpen si no se entiende mucho.
Pd2: los datos cargados fueron previamente formateados, y en este caso los datos que estudiamos con, %6.1f, es decir, con un ancho de 6 mas una cifra significativa.
Valora esta pregunta
0