Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como crear un bucle correctamente en Matlab

Estas en el tema de Como crear un bucle correctamente en Matlab en el foro de Programación General en Foros del Web. hola tengo líos con el bucle de este programa que lee un archivo de sonido y lo evalúa. lo que quiero es que para cada ...
  #1 (permalink)  
Antiguo 18/06/2013, 10:13
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 12 años, 2 meses
Puntos: 0
Como crear un bucle correctamente en Matlab

hola tengo líos con el bucle de este programa que lee un archivo de sonido y lo evalúa. lo que quiero es que para cada variación de t guarde un valor en cada espacio de los vectores a(n), b(n) luego de eso usar el valor que guardaron a(n) y b(n) evaluarlos y el resultado guardarlos en 2 nuevas variables An, tetan.
Para el caso de tetan guardarlo en un vector tetan(n) para poder graficar (t tetan).
Para el caso de An hago otra operación y guardo el resultado en el vector P(n) para poder graficar (W P).

Nota: u_hombre esta grabado en mono así que es solo un vector

A este momento no estoy seguro de:
t no se si sea un vector ademas de ser el contador del ciclo for así que no se si puedo usar plot(t,tetan).

El código es este.

Código C++:
Ver original
  1. clc;
  2. clear;
  3. [F,Fs]=wavread('u_hombre');
  4. wavplay(F,Fs);
  5. t=size(F,1)/Fs;
  6. n=0:1/Fs:t;
  7. plot(n(2:end),F)
  8. xlim([0 t])
  9. wo=(2*pi)/t
  10. %aproximadamente un ciclo
  11. %T=size(nboch,1)/Fs
  12.  
  13. for t=0.005283:0.0001:t
  14. n=0
  15. wo=(2*pi)/t
  16. a(n)=ao +(1/t)*trapz(t,F);
  17. a(n)=0;
  18. u=cos(n*wo*t)
  19. v=sin(n*wo*t)
  20. a(n)= a(n)+(2/t)*trapz(n,F.*cos(n*wo*t));
  21. b(n)=0;
  22. b(n)= b(n)+(2/t)*trapz(n,F.*sin(n*wo*t));
  23. %A[n] toma el valor de a[n] y b[n] en cada ciclo
  24. An=sqrt(a(n)^2+b(n)^2); %calculo la potencia
  25. P(n)=Ao^2+(a(n)^2/sqrt(2))^2
  26. if a(n)>0&&b(n)>0
  27. tetan(n)=atan(-b(n)/a(n));
  28. else if a(n)<0&&b(n)>0
  29. tetan(n)=90+atan(-b(n)/a(n));
  30. else if a(n)<0&&b(n)<0
  31. tetan(n)=180+atan(-b(n)/a(n));
  32. else if a(n)>0&&b(n)<0
  33. tetan(n)=270+atan(-b(n)/a(n));%calculo el angulo
  34. %ingreso el valor de cada An, P y w0 en un vector para poder graficarlos
  35. W(n)=wo
  36. n=n+1
  37. end
  38. plot(W,P)
  39. plot(t,tetan)

Etiquetas: bucle, correctamente, matlab, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:19.