天天看点

matlab实现一阶低通滤波器,matlab仿真一阶低通滤波器幅频特性和相频特性.docx

matlab仿真一阶低通滤波器幅频特性和相频特性

freqs模拟滤波器的频率响应语法:h = freqs(b,a,w)[h,w] = freqs(b,a)[h,w] = freqs(b,a,f)freqs(b,a)描述:freqs 返回一个模拟滤波器的H(jw)的复频域响应(拉普拉斯格式)?请给出分子b和分母ah = freqs(b, a, w) 根据系数向量计算返回模拟滤波器的复频域响应。freqs 计算在复平面虚轴上的频率响应h,角频率w确定了输入的实向量,因此必须包含至少一个频率点。[h, w] = freqs(b, a) 自动挑选200个频率点来计算频率响应h[h, w] = freqs(b, a, f) 挑选f个频率点来计算频率响应h例子:找到并画出下面传递函数的频率响应?Matlab代码:?a = [1 0.4 1];b = [0.2 0.3 1];w = logspace(-1, 1);logspace 功能:生成从10的a次方到10的b次方之间按对数等分的n个元素的行向量。n如果省略,则默认值为50。freqs(b, a, w);You can also create the plot with:h = freqs(b,a,w);mag = abs(h);phase = angle(h);subplot(2,1,1), loglog(w,mag)subplot(2,1,2), semilogx(w,phase)To convert to hertz, decibels, and degrees, use:f = w/(2*pi);mag = 20*log10(mag);phase = phase*180/pi;算法:freqs evaluates the polynomials at each frequency point, then divides the numerator response by the denominator response:s = i*w;h = polyval(b,s)./polyval(a,s)一阶低通滤波器频响计算:%**************************************************************************%一阶低通滤波器 % 取fH = 1/(2Π*R*C)% s=jw=j*2Π*f % 1 1%RC电路的电压增益 AVH = ——————— = ————————— (传递函数)% 1 + sRC 1 + j(f/fH)% 1 1%电压增益的幅值(模)|AVH| = ————————— = ———————— (幅频响应)% /——————/————————% \ / 1 + (wCR)^2 \ / 1 + (f/fH)^2% V V%%电压增益的相位角 ΦH = - arctg(wRC) = - arctg(f/fH)(相频响应)%**************************************************************************R=10000; %电阻的值 C=0.0000001; %电容的值 fZ=1; %H(e^jw)表达式分子的系数向量 fM=[R*C,1]; %H(e^jw)分母的系数向量 %logspace 功能:生成从10的a次方到10的b次方之间按对数等分的n个元素的行向量。n如果省略,则默认值为50。w=logspace(-1,5); %设定频率的变化范围 %freqs 根据系数向量计算返回一个模拟滤波器的H(e^jw)的复频域响应(拉普拉斯格式)g=freqs(fZ,fM,w); %求其频率响应%angle()返回复数元素的相角,单位为弧度x=angle(g); %求相频响应 %abs()对复数返回其幅值y=abs(g); %求幅频响应 subplot(2,1,1), %loglog()绘制双对数坐标,semilogx()/semilogy()绘制单对数坐标semilogx(w,x*180/pi) %画相频响应的曲线 hw=line([0.1,1000],[-45,-45]);set(hw,'LineWidth',1);set(hw,'color','r');xlabel('角频率/ (rad/s)'); ylabel('角度/ °'); grid on; subplot(2,1,2), %画幅频响应的曲线 semilogx(w,20*log10(y))h=line([0.1,10000],[