[SOLVED] 代写 C matlab Part B

30 $

File Name: 代写_C_matlab_Part_B.zip
File Size: 207.24 KB

SKU: 9396156279 Category: Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Or Upload Your Assignment Here:


Part B
clear all
clc
fm=1000; fl=710; fh=1420;

Gl=0.25;
Gm=1;
Gh=4;
[x fs]=audioread(‘/Users/hanboyu/Desktop/Music.wav’);
wcl=2*pi*fl/fs;
wcm=2*pi*fm/fs;
wch=2*pi*fh/fs;
B=wch-wcl;
N=length(x);
y=zeros(N,1);
z=zeros(N,1);
v=zeros(N,1);
for n=2:N
y(n)=((Gl*tan(wcl/2)+sqrt(Gl))*x(n)+(Gl*tan(wcl/2)-sqrt(Gl))*x(n
1)-((tan(wcl/2)-sqrt(Gl))*y(n-1)))/(tan(wcl/2)+sqrt(Gl));
end
for n=3:N
z(n)=((sqrt(Gm)+Gm*tan(B/2))*y(n)-(2*sqrt(Gm)*cos(wcm))*y(n
1)+(sqrt(Gm)-Gm*tan(B/2))*y(n-2)+(2*sqrt(Gm)*cos(wcm))*z(n-1)
(sqrt(Gm)-tan(B/2))*z(n-2))/(sqrt(Gm)+tan(B/2));
end
for n=2:N
v(n)=((sqrt(Gh)*tan(wch/2)+Gh)*z(n)+(sqrt(Gh)*tan(wch/2)
Gh)*z(n-1)-(Gh*tan(wch/2)-1)*v(n-1))/(Gh*tan(wch/2)+1);
end
sound(v,fs);

Matlab code of 2nd order filter design
clc;
clear;

fs = 24000;% sampling frequency
fl = 710;% lower frequency
fc = 1000; % center frequency
fu = 1420; % upper frequency
[x fs] =
audioread(‘UsersDechenDocumentsMATLABELEN90058Week7Mu
sic.wav’);
N = length(x);
y = zeros(N,1);
z = zeros(N,1);
s = zeros(N,1);

% parameters in the 2nd order low shelving filter
O1 = tan(pi*fl./fs);
G1 = 0.25;
K1 = sqrt(G1);
A1 = K1*O1^2 + O1*sqrt(2*K1) + 1;
B1 = 2*(K1 * O1^2 -1);
C1 = K1*O1^2 – O1*sqrt(2*K1) + 1;
D1 = K1 + O1*sqrt(2*K1) + O1^2;
E1 = 2*(O1^2 – K1);
F1 = K1 – O1*sqrt(2*K1) + O1^2;

% parameters in the 2nd order high shelving filter
O3 = tan(pi*fu./fs);
G3 = 4;
K3 = sqrt(G3);
A3 = K3 + O3*sqrt(2*K3) + O3^2;
B3 = 2*(O3^2 – K3);
C3 = K3 – O3*sqrt(2*K3) + O3^2;
D3 = K3*O3^2 + O3*sqrt(2*K3) + 1;
E3 = 2*(K3 * O3^2 -1);
F3 = K3*O3^2 – O3*sqrt(2*K3) + 1;

% parameters in the 2nd order peaking filter
B = 2*pi*(fu-fl)./fs;
w2 = 2*pi*fc./fs;
G2 = 1;
K2 = sqrt(G2);
A2 = K2 + G2*tan(B/2);
B2 = -2*K2*cos(w2);
C2 = K2 – G2*tan(B/2);
D2 = K2 + tan(B/2);
E2 = -2*K2*cos(w2);
F2 = K2 – tan(B/2);

% 3 filters in cascade
for i=3:N
y(i) = (A1*K1*x(i) + B1*K1*x(i-1) + C1*K1*x(i-2) – E1*y(i-1) –
F1*y(i-2))/D1;
end

for i=4:N
z(i) = (A2*y(i) + B2*y(i-1) + C2*y(i-2) – E2*z(i-1) – F2*z(i-2))/D2;
end

for i=3:N
s(i) = (A3*K3*z(i) + B3*K3*z(i-1) + C3*K3*z(i-2) – E3*s(i-1) –
F3*s(i-2))/D3;
end

sound(s, fs);

C code of 1st order filter design
#include “SPWS3.h”

#define PI 3.14159265359
#define SAMPLE_RATE 24000.0
#define N 100
#define fl 1000.0
#define fm 2000.0
#define fh 4000.0

// Input samples
float LeftInput;
float RightInput;

// Output samples
float LeftOutput;
float RightOutput;

// Command Gains (GL, GM, and GH) which are changed by push-button
switches 4-6
float GainL = 1.0;
float GainM = 1.0;
float GainH = 1.0;

// Declare any global variables you need
float x[N]={0,0};
float y[N]={0,0};
float z[N]={0,0};
float v[N]={0,0};
int c=0;
int i=0;
float wcl = 2*PI*fl/SAMPLE_RATE;
float wcm = 2*PI*fm/SAMPLE_RATE;
float wch = 2*PI*fh/SAMPLE_RATE;

void Equalizer(void)
{
// TODO: Implement your three band Equalizer containing two
Shelving filter
// and one peaking/notch filter. Use GainL, GainM, and GainH
// as command gains of first, second, and third band respectively.
float B = wch – wcl;
x[c] = LeftInput;
int d=c-1;
int e=c-2;
if (d<0){ d=d+N;}if (e<0){ e=e+N;}y[c]=((GainL*tan(wcl/2)+sqrt(GainL))*x[c]+(GainL*tan(wcl/2)sqrt(GainL))*x[d]-((tan(wcl/2)sqrt(GainL))*y[d]))/(tan(wcl/2)+sqrt(GainL));z[c]=((sqrt(GainM)+GainM*tan(B/2))*y[c](2*sqrt(GainM)*cos(wcm))*y[d]+(sqrt(GainM)GainM*tan(B/2))*y[e]+(2*sqrt(GainM)*cos(wcm))*z[d]-(sqrt(GainM)tan(B/2))*z[e])/(sqrt(GainM)+tan(B/2));v[c]=((sqrt(GainH)*tan(wch/2)+GainH)*z[c]+(sqrt(GainH)*tan(wch/2)-GainH)*z[d]-(GainH*tan(wch/2)-1)*v[d])/(GainH*tan(wch/2)+1);LeftOutput = v[c];c++;c = c % N;// LeftOutput = (GainL)*LeftInput; }

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] 代写 C matlab Part B
30 $