Matlab - Bucle FOR

 
Vista:
Imágen de perfil de César

Bucle FOR

Publicado por César (16 intervenciones) el 18/05/2014 14:59:55
Buenos Dias

Quisiera que me ayuden en esta oportunidad para poder reducir el espacio de mi programa utilizando el comando FOR o otro.

Tengo 4 angulos(Q1,..), para obtener la variable (tau11....), obteniendo 16 en total. después van a ser insertados en otra formula obteniendo los vectores (Vk0.....) para poder obtener la matriz (Vw), como todo es repetitivo quisiera reducirlo dentro de FOR.

Despues tengo una señal donde al tiempo se le va a restar cada un (T-tau11, T-tau12.....) y después se le aplica la FFT, obteniendo al final 16 señales diferentes, como puedo reducirlo utilizando el bucle FOR - END u otro.

Alguien podria ayudarme o mostrarme el camino como comenzar.

Muchas gracias.
César

%%%%% Campo 4 sinais e 4 microfones %%%%%%

d1=0;d2=1;d3=2;d4=3;c=340;y=0;
r1=4;r2=7;r3=8;r4=5;
Q1=65;Q2=10;Q3=330;Q4=300;%%ângulos
F0=1000;Fs=8000;Ts=1/Fs;T=0:Ts:0.1;
A1=2;W=2*pi*F0;


%%%% ATRASO COM Q1%%%%
tau11=d1*cosd(Q1)/c; tau12=d2*cosd(Q1)/c; tau13=d3*cosd(Q1)/c; tau14=d4*cosd(Q1)/c;

%%%% ATRASO COM Q2%%%%
tau21=d1*cosd(Q2)/c; tau22=d2*cosd(Q2)/c; tau23=d3*cosd(Q2)/c; tau24=d4*cosd(Q2)/c;

%%%% ATRASO COM Q3%%%%
tau31=d1*cosd(Q3)/c; tau32=d2*cosd(Q3)/c; tau33=d3*cosd(Q3)/c; tau34=d4*cosd(Q3)/c;

%%%% ATRASO COM Q4%%%%
tau41=d1*cosd(Q4)/c; tau42=d2*cosd(Q4)/c; tau43=d3*cosd(Q4)/c; tau44=d4*cosd(Q4)/c;

Vk0=[exp(-j*W*tau11); exp(-j*W*tau12) ;exp(-j*W*tau13); exp(-j*W*tau14)];
Vk1=[exp(-j*W*tau21);exp(-j*W*tau22);exp(-j*W*tau23);exp(-j*W*tau24)];
Vk2=[exp(-j*W*tau31);exp(-j*W*tau32);exp(-j*W*tau33);exp(-j*W*tau34)];
Vk3=[exp(-j*W*tau41);exp(-j*W*tau42);exp(-j*W*tau43);exp(-j*W*tau44)];

%%%%% Matriz V(w) %%%%%%
Vw=[Vk0 Vk1 Vk2 Vk3];


%%% creamos sinai 1 %%%


%%% sinai 1 mic 1 %%%%
y11=A1*cos(2*pi*F0*(T-tau11)+(pi/6));
XW11=(abs(fft(y11)))'; %%%Sinai recibida no mic1 com sinai1
%%% sinai 1 mic 2 %%%%
y12=A1*cos(2*pi*F0*(T-tau12)+(pi/6));
XW12=(abs(fft(y12)))'; %%%Sinai recibida no mic2 com sinai1
%%% sinai 1 mic 3 %%%%
tempo13=(T-tau13);
y13=A1*cos(2*pi*F0*(T-tau13)+(pi/6));
XW13=(abs(fft(y13)))'; %%%Sinai recibida no mic3 com sinai1
%%% sinai 1 mic 4 %%%%
y14=A1*cos(2*pi*F0*(T-tau14)+(pi/6));
XW14=(abs(fft(y14)))'; %%%Sinai recibida no mic4 com sinai1


%%% creamos sinai 2 %%%

%%% sinai 2 mic 1 %%%%
tempo21=(T-tau21);
y21=A1*cos(2*pi*F0*(T-tau21)+(pi/6));
XW21=(abs(fft(y21)))'; %%%Sinai recibida no mic1 com sinai2
%%% sinai 2 mic 2 %%%%
y22=A1*cos(2*pi*F0*(T-tau22)+(pi/6));
XW22=(abs(fft(y22)))'; %%%Sinai recibida no mic2 com sinai2
%%% sinai 2 mic 3 %%%%
y23=A1*cos(2*pi*F0*(T-tau23)+(pi/6));
XW23=(abs(fft(y23)))'; %%%Sinai recibida no mic3 com sinai2
%%% sinai 2 mic 4 %%%%
y24=A1*cos(2*pi*F0*t(T-tau24)+(pi/6));
XW24=(abs(fft(y24)))'; %%%Sinai recibida no mic4 com sinai2


%%% creamos sinai 3 %%%

%%% sinai 3 mic 1 %%%%
y31=A1*cos(2*pi*F0*(T-tau31)+(pi/6));
XW31=(abs(fft(y31)))'; %%%Sinai recibida no mic1 com sinai3
%%% sinai 3 mic 2 %%%%
y32=A1*cos(2*pi*F0*(T-tau32)+(pi/6));
XW32=(abs(fft(y32)))'; %%%Sinai recibida no mic2 com sinai3
%%% sinai 3 mic 3 %%%%
y33=A1*cos(2*pi*F0*(T-tau33)+(pi/6));
XW33=(abs(fft(y33)))'; %%%Sinai recibida no mic3 com sinai3
%%% sinai 3 mic 4 %%%%
y34=A1*cos(2*pi*F0*(T-tau34)+(pi/6));
XW34=(abs(fft(y34)))'; %%%Sinai recibida no mic4 com sinai3


%%% creamos sinai 4 %%%

%%% sinai 4 mic 1 %%%%
y41=A1*cos(2*pi*F0*(T-tau41)+(pi/6));
XW41=(abs(fft(y41)))'; %%%Sinai recibida no mic1 com sinai4
%%% sinai 4 mic 2 %%%%
y42=A1*cos(2*pi*F0*(T-tau42)+(pi/6));
XW42=(abs(fft(y42)))'; %%%Sinai recibida no mic2 com sinai4
%%% sinai 4 mic 3 %%%%
y43=A1*cos(2*pi*F0*(T-tau43)+(pi/6));
XW43=(abs(fft(y43)))'; %%%Sinai recibida no mic3 com sinai4
%%% sinai 4 mic 4 %%%%
y44=A1*cos(2*pi*F0*(T-tau44)+(pi/6));
XW44=(abs(fft(y44)))'; %%%Sinai recibida no mic4 com sinai4
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Bucle FOR

Publicado por Dave (1094 intervenciones) el 18/05/2014 16:18:21
Hola Cesar;

A continuación, un avance de la automatización de tu código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
d = [0,1,2,3];
c=340;
y=0;
r = [4,7,8,5];
Q = [65, 10, 330, 300];     %ângulos
 
F0=1000;
Fs=8000;
Ts=1/Fs;
T=0:Ts:0.1;
 
A1=2;
W=2*pi*F0;
 
for m = 1:length(d)
for n = 1:length(Q)
    tau(m,n) = d(m) * cosd(Q(n))/c;
    Vk(m,n) = exp(-j*W*tau(m,n));
    y=A1*cos(2*pi*F0*(T-tau(m,n))+(pi/6));
    XW=(abs(fft(y)))'; %%%Sinai recibida no mic1 com sinai1
end
end


Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de César

Bucle FOR

Publicado por César (16 intervenciones) el 18/05/2014 17:07:01
Gracias por la ayuda, sigue contacto vía correo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar