Matlab - ciclo for matlab

 
Vista:
sin imagen de perfil

ciclo for matlab

Publicado por Harold (6 intervenciones) el 14/11/2016 03:56:34
Hola a todos, estoy haciendo un programa sobre un filtro en matlab, una parte del codigo va asi:
1
2
3
4
5
6
7
8
M=21;
 
for i=1:M
     n=i-1;
     H(i)=(1/M)*(1+2*(-cos((2*pi/M)*(n+(1/2))) + cos((4*pi/M)*(n+(1/2)))));
end
hd=dfilt.df1(H);
freqz(hd)

pero quiero agregar otro for para variar el valor de M y asi variar el valor de K, es decir que el usuario lo cambie, al mometo de hacerlo me da un error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clc
clear
Fs=8000;
M=41;
deltaF=(Fs/2)/((M-1)/2);
Fc=800; %Frecuencia de corte
U=Fc/deltaF;
K=fix(U);
 
for j=1:1:K+1
    G(j)=-1*((-1)^j);
    for i=1:M
        n=i-1;
 
        %symsum(k^2, k, 0, 10)
        %H(i)=(1/M)*(1+(2*[symsum(G(1)*cos(((2*pi*h)/M)*(n+0.5))),G(j),1,G(K)]));
    end
end

la ecuacion que debo seguir esta adjunta.
gracias
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

ciclo for matlab

Publicado por Royeth (1818 intervenciones) el 14/11/2016 04:37:33
qué error se te presenta? yo ejecuté el código que has puesto abajo y se ejecuta sin problemas
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
sin imagen de perfil

ciclo for matlab

Publicado por Harold (6 intervenciones) el 14/11/2016 05:42:30
gracias por responder, al comparar los resultados de H en los dos casos no me dan lo mismo, por lo tanto algo debe estar quedando mal en el codigo de abajo
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

ciclo for matlab

Publicado por Royeth (1818 intervenciones) el 14/11/2016 18:28:33
sube todos los archivos necesarios para correr el programa
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
sin imagen de perfil

ciclo for matlab

Publicado por Harold (6 intervenciones) el 14/11/2016 19:25:34
Hola gracias por responder, tengo este código en matlab y funciona correctamente, ahora estoy creando una interfaz gráfica

1
2
3
4
5
6
7
8
9
10
11
12
13
14
clc
clear
Fs=8000;
M=15;
deltaF=(Fs/2)/((M-1)/2);
Fc=600; %Frecuencia de corte
U=Fc/deltaF;
K=fix(U);%para que me de un valor entero sin decimales
for i=1:M
    n=i-1;
    H(i)=(1/M)*(1+2*(-cos((2*pi/M)*(n+(1/2))) + cos((4*pi/M)*(n+(1/2))) - cos((6*pi/M)*(n+(1/2)))));
end
hd=dfilt.df1(H);
freqz(hd)

Como se ve en el código, el valor de fc es de 600, pero para la interfaz quiero que el usuario pueda cambiar este valor, al igual que M, al cambiar el valor de M y fc, me modifica el valor de K, y en H(i), K me dice que tantas veces debo hacer la sumatoria, por ejemplo en el código de arriba K=3, por lo que va hasta 6*pi, en ese caso digamos si al cambiar M y fc, K me da 4, la sumatoria tendría que ir hasta 8*pi y así sucesivamente, según la formula que subi adjunta anteriormente
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