Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/06/2013, 10:13
sonrasiel
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 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)