• Miércoles 15 de Abril de 2026, 00:36

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - EliotHijano

Páginas: [1]
1
Matlab / Re: uso de variables en bucles for
« en: Jueves 23 de Julio de 2009, 11:26 »
Por supuesto, tienes que utilizar un array:
Código: Matlab M
  1.  
  2. data=zeros(6,1);
  3. for i = 1:6
  4.    data(i) = i + 4;
  5. end
  6.  
  7.  
Pero nunca se puden crear variables cullos nombres dependadn del valor 'i', es decir, en vez de las variables data1, data2, data3,... tendrías un array con valores data(1) data(2),...

Por cierto, no es bueno utilizar i ó j en bucles, dado que son letras que matlab utiliza para numeros complejos, lo cual reduce la velocidad del bucle, utiliza 'in' en vez de 'i'

2
Matlab / Re: Novato en MatLab
« en: Jueves 16 de Julio de 2009, 17:30 »
Si No quieres cambiar tu codigo:
Código: Matlab M
  1.  
  2. cont=1;
  3. for index=1:length(N)
  4.    if ( N(index)!=0 )
  5.       NN(cont)=N(index);
  6.       cont=cont+1;
  7.    end
  8. end
  9. N=NN;
  10.  

Si quieres cambiarlo:
Código: Matlab M
  1. %M son los 50 datos
  2. n=50;
  3. M=[101 49.21 77.78 87.30 92.06 52.38 88.00 68.89 87.30 122.00 95.00 99.00 92.06 87.30 90.48 90.48 80.00 110.00 72.50 88.89 77.50 89.00 42.00 88.89 87.00 85.00 77.00 92.06 112.00 82.54 60.00 93.65 82.00 93.65 85.71 87.30 99.00 142.00 88.00 95.24 77.78 95.24 99.00 96.83 93.65 57.14 72.50 122.22 79.00 71.43]';
  4. cont=1; %lo utilizaremos para que no se añadan ceros, que vaya añadiendo los números que queremos, uno tras otro.
  5. for i=1:n
  6.    if (M(i) <= 70.00)
  7.       N(cont,1) = i;
  8.       cont=cont+1;
  9.    elseif (M(i) >= 125.00)
  10.       N(cont,1) = i;
  11.       cont=cont+1;
  12.    end
  13. end
  14. N % indica la posicion de los datos buscados
  15.  

Sin duda este ultimo es mejor, mucho más rápido.

3
Matlab / FFT2 para un array multidimensional
« en: Jueves 16 de Julio de 2009, 14:55 »
Hola,
Me gustaría preguntaros una duda que tengo sobre FFT2. El caso es que tengo un código tal que así:
Código: Matlab M
  1.  
  2. Yr=fft2(Yr);
  3.  
  4.  
Es decir, Yr es un array bidimensional al que se le aplica la transformada de Fourier2D. Sin embargo, este código está dentro de un for, y estoy intentando vectorizar el código con el fin de mejorar la velocidad. Para ello, he creado un array Yr que ahora es tridimensional, es decir, tiene las dos dimensiones de antes y una más.
Me gustaría utilizar alguna expresión para hacer la transformada de fourier 2D de ese array, es decir, hacer la transformada de fourier 2D de cada uno de los arrays que representa la expresión Yr(:,:,integer).
Se os ocurre alguna manera de hacer esto sin utilizar un for?

Qualquier comentario seria de ayuda.

Páginas: [1]