Programación Simulinkfft
(1)Esto se puede solucionar.
Es posible que desee modificar FS F,
fs = 22050
El % de frecuencia de muestreo de la señal de sonido es 22050.
X1=wavread('h:\Course Design 2 \shuzi . wav '); %Lee los datos de la señal de voz y asígnalos a la variable x1.
Sonido (x1, 22050); % Reproduce la señal de voz
y1=fft (x1, 1024); % Realiza una transformación FFT de 1024 puntos en la señal.
f = fs *(0:511)/1024;
Figura (1)
Plot(x1)% se utiliza para trazar el original en el Señal de voz en el dominio del tiempo.
Título("señal de voz original");
xlabel(' tiempo n ');
ylabel('Fuzhi n');
Figura (2)
Freqz(x1)% dibuja el diagrama de respuesta de frecuencia de la señal de voz original.
Título ("Diagrama de respuesta en frecuencia")
Imagen (3)
Subtrama (2, 1, 1);
trama (ABS(Y 1(1:512))% produce el espectro FFT de la señal de voz original.
Título ("Espectro FFT de la señal de voz original")
Gráfico de rama (2 , 1, 2);
plot(f, ABS(y 1(1:512));
Título ("Espectro de señal de voz original")
xlabel(' Hz ');
ylabel('Fuji');
(2) se agrega a la señal de voz original
s= sin(2 *pi*f*Ts*n)
Puedes configurar s=sin(2*pi*f*Ts*n) para modificar el siguiente valor d
fs = 22050<. /p>
X1=wavread('h:\Diseño del curso 2 \ shuzi . wav ');
f = fs *(0:511)/1024;
t = 0:1/22050:(size(x 1)-1)/22050; % ajusta el número de puntos de la señal de ruido agregada para que sea igual a la señal original
<. p>Au = 0.03d =[Au * cos(2 * pi * 5000 * t)]'; señal coseno con porcentaje de ruido de 5kHz
x2 = x 1+d ;
Sonido (x2, 22050); % reproducir señal de voz ruidosa
y2=fft(x2, 1024
Figura (1)
Trama (t , x2)
Título ("Señal ruidosa");
xlabel(' tiempo n ');
ylabel(' Fuzhi n');
Imagen (2)
Gráfico de rama (2, 1, 1);
gráfico (f, ABS (y 1 (1); :512));
Título("Espectro de señal de voz original");
xlabel(' Hz ');
ylabel('Fuji');
Gráfico de rama (2, 1, 2);
plot(f, ABS(y2(1:512)));
Título ("Señal espectro con ruido agregado");
xlabel(' Hz ');
ylabel('Fuji');
(3) ya existe. p>
( 4) Puede aprender de los siguientes programas.
Programa 3: Diseñar filtro Butterworth usando el método de transformación bilineal
fs = 22050
X1=wavread('h:\Course Design 2 \ shuzi . wav ' );
t = 0:1/22050:(tamaño(x 1)-1)/22050;
Au = 0,03
d =[Au * cos(2 * pi * 5000 * t)]';
x2 = x 1+d;
wp = 0,25 * pi
ws = 0,3 * pi
RP = 1;
RS = 15
Fs = 22050
ts = 1/Fs;
WP 1 = 2/Ts * tan(WP/2); %Convertir indicador analógico a indicador digital
ws 1 = 2/Ts * tan(ws /2);
[N, Wn]= pero ord(WP 1, ws1, Rp, Rs, 's' % selecciona el orden mínimo del filtro.
[Z, P, K] = buttap (N); % Crear filtro analógico Butterworth
[Bap, Aap] = zp2tf (Z, P, K); >
[b, a]=lp2lp(Bap,Aap,Wn);
[bz, az]=bilinear(b,a,Fs); %Usar bilineal El método de transformación realiza la conversión. de filtro analógico a filtro digital
[H, W]=freqz(bz, az % dibuja la curva de respuesta de frecuencia
Figura (1)
Plot(W*Fs/(2*pi), abs(H))
Cuadrícula
Xlabel("Frecuencia/Hercios")
Ylabel(" Amplitud de respuesta de frecuencia")
Título("Butterworth")
f1=filter(bz, az, x2);
Figura (2)
Gráfico de rama (2, 1, 1)
Plot(t, x2)% dibuja el diagrama en el dominio del tiempo antes de filtrar.
Título ("Forma de onda en el dominio del tiempo antes del filtrado");
Gráfico de rama (2, 1, 2)
gráfico (t, f 1); Dibuja el gráfico en el dominio del tiempo filtrado.
Title("Forma de onda en el dominio del tiempo filtrada");
Sonido(f1, 22050);
F0=fft(f1,1024);
f = fs *(0:511)/1024;
Figura (3)
y2=fft(x2,1024);
Gráfico de rama (2,1,1);
plot(f,ABS(y2(1:512)); % Trazar el espectro antes de filtrar.
Title("Espectro antes de filtrar")
xlabel(' Hz ');
ylabel('Fuji');
Gráfico de rama (2, 1, 2)
F1=plot(f,ABS(F0(1:512))); % traza el espectro filtrado.
Título("Espectro filtrado")
xlabel(' Hz ');
ylabel('Fuji');
Programa 4: Utilice el método de función de ventana para diseñar filtros;
fs = 22050
X1=wavread('h:\Course Design 2 \ shuzi . wav ');
t = 0:1/22050:(tamaño(x 1)-1)/22050;
Au = 0,03
d =[Au * cos(2 * pi * 5000 * t)]';
x2 = x 1+d;
wp = 0,25 * pi
ws = 0,3 * pi
wdelta = ws-WP;
n = ceil(6.6 * pi/w delta); % redondeo
wn = (0.2+0.3)* pi/2;< / p>
b=fir1(N, wn/pi, hamming(N+1) % selecciona la función de ventana y normaliza la frecuencia de corte.
Figura (1)
Frecuencia (b, 1, 512)
f2 = filtro (bz, az, x2)
Figura (2)
Gráfico de rama (2, 1, 1)
Dibujo (t, x2)
Título ("Forma de onda en el dominio del tiempo antes del filtrado") ;
Gráfico de rama (2, 1, 2)
gráfico (t, F2);
Título ("Forma de onda en el dominio del tiempo filtrada" ); p>
Sonido (f2, 22050); % reproduce la señal de voz filtrada.
F0=fft(f2,1024);
f = fs *(0:511)/1024;
Figura (3)
y2=fft(x2,1024);
Gráfico de rama (2,1,1);
plot(f,ABS(y2(1:512));
Título("Espectro antes del filtrado")
xlabel(' Hz '
ylabel('Fuji');
Gráfico de ramas (2, 1, 2)
F2=plot(f, ABS(F0(1:512));
Título ("Espectro filtrado")
xlabel(' Hz ');
ylabel('Fuji');
Debería haber un pequeño error en estos programas. Al solucionarlo, descubrí que el. la fórmula x2 no se puede utilizar directamente. =x1+d D
(5) En resumen, se puede utilizar el siguiente procedimiento como referencia
fs = 22050
% de frecuencia de muestreo de señal de sonido es 22050.
x 1 = wav read(' Windows Critical stop . wav ');
Sonido (x1, 22050 ); % Reproducir la señal de voz
y1=fft(x1, 1024); % Realizar una transformación FFT de 1024 puntos en la señal
f = fs *(0:511)/1024;
Figura (1)
Plot(x1)% se utiliza para trazar la señal de voz original en el dominio del tiempo.
Título ("Señal de voz original");
xlabel(' tiempo n ');
ylabel('Fuzhi n');
x2=randn(1, length (x 1)) ;%Generar una señal aleatoria con la misma longitud que x
Sonido (x2, 22050);
Figura ( 2)
Plot(x2)% es un gráfico en el dominio del tiempo de la señal de voz original.
Título('Señal aleatoria gaussiana');
xlabel(' tiempo n ');
ylabel('Fuzhi n');
Figura (3)
x3 = x 1+x2;
y3=fft(x3, 1024);
f = fs *( 0 :511)/1024;
plot(t,x3)
title('señal ruidosa');
xlabel(' tiempo n '); /p>
ylabel('Fuzhin');
Imagen (4)
Gráfico de rama (4, 1, 1);
plot(); f,ABS(y 1(1:512));
Título("Espectro de señal de voz original");
xlabel(' Hz ');
ylabel('Fuji');
Trama de rama (4, 1, 2);
plot(f, ABS(y3(1:512));
Título("Espectro de señal con ruido agregado");
xlabel(' Hz ');
ylabel('Fuji');
Hay También está el problema anterior. La fórmula x3 = x2 + x1 no está disponible. Algunas personas dicen que los tipos son diferentes y no se pueden agregar directamente, pero siento que la fórmula de la función que acabo de llegar. >