• Sábado 18 de Abril de 2026, 14:52

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 - elejazz

Páginas: [1]
1
Matlab / Re: Crear un filtro a partir de un espectro
« en: Miércoles 4 de Agosto de 2010, 13:06 »
Sisi, luego lo vi, que lo que me faltava era pasarlo a valor absoluto "abs( )"

Pero lo de la funcion filter, por que se pone el 1 al segundo parametro?


muchas gracias por todo :-)

2
Matlab / Re: Crear un filtro a partir de un espectro
« en: Martes 3 de Agosto de 2010, 15:52 »
Hey, muchas gracias Humphrey

eso seguro que es lo que necesito, lo he estado provando pero no logro obtenerlo con exactitud...
te pongo mi ejemplo a ver si me puedes ayudar:
(te recuerdo mi objetivo, tengo la funcion s  que crea un sonido con determinados armonicos, y a partir de la cual quiero diseñar mi filtro
por eso hago la transformada, la paso a frecuencias y opero segun tu me diciste,... para luego poder filtar algun archivo de audio)



fm=44100;  %frecuencia de muestreo (para audio)
fp=440;      %frecuencia fundamental del sonido
w=2*pi*fp
d=4.0;          % duracion en segundos
t=0:1/fm:d;  % Vector de tiempo

%%%% esta es la funcion que me crea el sonido con sus armonicos
s = sin(w*t) + 0.7*sin(3*w*t) + 0.2*sin(7*w*t) + 0.6*sin(9*w*t) + 0.3*sin(11*w*t);

[X,Fs,NBITS]=wavread('NOTAa440.wav');   %leo el .wav que quiero filtrar ... supongo que se guarda en X

% -----------------------> parte del codigo tuyo

IR=fft(s)
frec= linspace(0,length(IR),500);    % Tomo 500 muestras de todo mi espectro. IR es mi vector con respuesta en frec
frec= round(frec);       % redondeo para que no de problemas
frec1= frec/max(frec);   % Normalizar a 1
frecA= [1 frec(2:end)];   % frecuencias. Cojo desde 2 hasta el final, para no coger el indice 0
Amp=IR(frecA);              % Amplitud

B=fir2(250,frec1,Amp); % coeficientes del filtro
%B = fdesign.arbmag(250,frec1,abs(Amp)); %es otra opcion de diseñar un filtro (que de momento no se utilizar)

%---------------------> A PARTIR DE AQUI ES DONDE TENGO DUDAS

plot(frec1,Amp);  % con eso debería ver la forma del filtro, pero NO se parece con el espectro de la señal "s"

final=conv(B, X);  %supongo que es la manera valida de filtrar una vez creado el filtro, o mejor con la funcion "filter" ??
soundsc(final,fm);



----------------------> pero me salen estos errores (que yo sepa A y B que es la X, ya son vectores... que problema hay??)
??? Error using ==> conv
A and B must be vectors.

Error ==> at 42
final=conv(B, X);
---------------------> crees que es como lo devo hacer??  o lo tengo que hacer de otra forma para conseguir mi objetivo?



saludos ;)

3
Matlab / Crear un filtro a partir de un espectro
« en: Miércoles 14 de Julio de 2010, 19:39 »
Hola,

tengo que hacer un filtro, con una forma determinada, es decir que no sea ni pasabajo, alto ni banda...

A través de una funcion sinusoidal hago la transformada de fourier para obtener su espectro, y el resultado (la forma) de ese espectro es lo que yo debo convertir en filtro.

Me han comentado que provase con "fdesign.arbmag" ... pero no se como empezar


Teneis alguna idea sobre filtros para explicarme? me aconsejáis alguna alternativa o como utilizar la funcion que he escrito arriba ??


Cualquier cosa sera muy agradecida.

Páginas: [1]