求大神解释下段MATLAB程序并注释一下,急求!

求大神解释下段MATLAB程序并注释一下,急求!,第1张

clear all;

close all;

fs=2500; %采样率

fp=99,fc=105; %通带边界频率和截止频率

wp=2pifp/fs; %频率做归一化处理

ws=2pifc/fs;

Bt=ws-wp; %过渡带宽

N0=ceil(66pi/Bt); %确定滤波器长度

N=N0+mod(N0+1,2); %保证为奇数

wc=(wp+ws)/2/pi; %过渡带中心频率

hn=fir1(N-1,wc,hamming(N)); %汉明窗滤波器

freqz(hn,1,512); %绘制频率响应图

%%构造测试信号

f1=30;f2=45;f3=80;f4=93;f5=99;f6=130; %各频率分量(Hz)

t=0:001:2; %时长

x=05cos(2pif1t)+03cos(2pif2t)+02cos(2pif3t)+07cos(2f4pit)+08cos(2pif5t)+06cos(2pif6t); %测试信号

figure(5);

subplot(211)

plot(t,x);

y=filter(hn,1,x); %时域滤波

title('滤波前信号');

subplot(212)

plot(t,y);

title('滤波后信号');

1、首先在m文件中输入下面的代码:

x = -pi:pi/10:pi

y = sin(x)

plot(x,y,'--rs','LineWidth',2,

             'MarkerEdgeColor','k',

             'MarkerFaceColor','g',

             'MarkerSize',10)

画出图如下。

2、第一种方法:

直接在代码前面输入 %

x = -pi:pi/10:pi

% y = sin(x)

% plot(x,y,'--rs','LineWidth',2,

%                'MarkerEdgeColor','k',

%                'MarkerFaceColor','g',

%                'MarkerSize',10)

在命令窗口中,仅看到x的值,y值与图均没有执行。

3、第二种方法:

%{

x = -pi:pi/10:pi;

y = sin(x);

plot(x,y,'--rs','LineWidth',2,

             'MarkerEdgeColor','k',

             'MarkerFaceColor','g',

             'MarkerSize',10)

%}

d = -pi:pi/10:pi;

如果取消注释的话,将%{  和 %}删除即可。

4、第三种方法:

if 0

x = -pi:pi/10:pi;

y = sin(x);

plot(x,y,'--rs','LineWidth',2,

             'MarkerEdgeColor','k',

             'MarkerFaceColor','g',

             'MarkerSize',10)

end

d = -pi:pi/10:pi

通过一个条件使得程序不执行这几行代码,也就意味着注释掉了。

5、第四种方法:

选中代码,然后用命令按钮来实现注释和取消注释。

length:数组长度(即行数或列数中的较大值)

reshape把指定的矩阵改变形状,但是元素个数不变

out是矩阵吧,那么out(i,1)就是其中的某一元素

abs()取某数的绝对值

floor:朝负无穷方向舍入

回答不是很完整,因为我也对MATLAB也只是懂个皮毛,用的时候查资料

告诉一个方法吧,那个函数不会用了,去百度搜索

比如length函数,搜索 matlab+length 就可以找到相关资料

function [ITSE] = SS(B)%定义函数名称,输入的是矩阵,在本方程代号是B,输出 [ITSE]

[H,L]=size(B);%读取矩阵的行列数

for i=1:H %逐行 *** 作

for j=1:L%行内逐个 *** 作

a(j)=B(i,j);

end

%%%上面小循环的意思是将第i行写入向量a

for k=1:(L+2)

if k==1

A(k)=1;

elseif k==(L+2)

A(k)=1;

elseif 1

A(k)=a(k-1);

end

end

%%%%%A=[1,a,1]在a前后各补上一个数1,构成新向量A

set_param('Simplex/Transfer Fcn','Denominator',mat2str(A));

[t,x,y]=sim('Simplex',100);

上面设置目录,运行sim函数,输出 [t,x,y]

n=length(t); 取t的长度

ITSE(i)=x(n,1);%该行的值去x中(n,1)值,然后逐行 *** 作得到向量TSE

end

end

层次关系自己区分清楚哈

把值付给四个变量

wp=2pi5000;ws=2pi12000;Rp=2;As=30;

1 buttord

(1)[N,wc]=buttord(wp,ws,αp,αs)

用于计算巴特沃斯数字滤波器的阶数N和3dB截止频率wc。

调用参数wp,ws分别为数字滤波器的通带、阻带截止频率的归一化值,要求:0≤wp≤1,0≤ws≤1。1表示数字频率pi。

αp,αs分别为通带最大衰减和组带最小衰减(dB)。

当ws≤wp时,为高通滤波器;

当wp和ws为二元矢量时,为带通或带阻滤波器,这时wc也是二元向量。

N,wc作为butter函数的调用参数。

(2)[N,Ωc]=buttord(Ωp,Ωs,αp,αs,‘s’)

用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率Ωc。

Ωp,Ωs,Ωc均为实际模拟角频率。

说明:buttord函数使用阻带指标计算3dB截止频率,这样阻带会刚好满足要求,而通带会有富余。

2buttap(N)

[z0,p0,k0]=buttap(N)

用于计算N阶巴特沃斯归一化(3dB截止频率Ωc=1)模拟低通原型滤波器系统函数的零、极点和增益因子。

说明:如果要从零、极点模型得到系统函数的分子、分母多项式系数向量ba、aa,可调用

[B,A]=zp2tf(z0,p0,k0)

3butter

(1)[b,a]=butter(N,wc,‘ftype’)

计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。

调用参数N和wc分别为巴特沃斯数字滤波器的阶数和3dB截止频率的归一化值(关于pi归一化),一般是调用buttord(1)格式计算N和wc。

系数b、a是按照z-1的升幂排列。

(2)[B,A]=butter(N,Ωc,‘ftype’,‘s’)

计算巴特沃斯模拟滤波器系统函数的分子、分母多项式系数向量ba、aa。

调用参数N和Ωc分别为巴特沃斯模拟滤波器的阶数和3dB截止频率(实际角频率),可调用buttord(2)格式计算N和Ωc。

系数B、A按s的正降幂排列。

tfype为滤波器的类型:

◇ftype=high时,高通;Ωc只有1个值。

◇ftype=stop时,带阻阻;此时Ωc=[Ωcl,Ωcu],分别为带阻滤波器的通带3dB下截止频率和上截止频率。

◇ ftype缺省时:

若Ωc只有1个值,则默认为低通;

若Ωc有2个值,则默认为带通;其通带频率区间Ωcl < Ω < Ωcu。

注意:所设计的带通和带阻滤波器系统函数是2N阶。因为带通滤波器相当于N阶低通滤波器与N阶高通滤波器级联。

[N,wc]=buttord(wp,ws,Rp,As,'s');

[B,A]=butter(N,wc,'s');

k=0:511;fk=0:14000/512:14000;wk=2pifk;

Hk=freqs(B,A,wk);

画图,两行两列

subplot(2,2,1);

plot(fk/1000,20log10(abs(Hk)));grid on

坐标轴意义

xlabel('频率(kHz)');ylabel('幅度(dB)')

坐标的取值范围

axis([0,14,-40,5])

以上就是关于求大神解释下段MATLAB程序并注释一下,急求!全部的内容,包括:求大神解释下段MATLAB程序并注释一下,急求!、matlab中如何注释掉一段、请高手指点下这MATLAB程序的内容并帮忙注释下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9800506.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存