信号与系统——matlab

一、信号的matlab表示与绘图

1、连续信号绘图,例:

f(t)=5e^{-0.8t}sin(\pi t),0<t<5

t=0:0.0001:5;
a=5;
b=-0.8;
x=a*exp(b*t).*sin(pi*t);    %注意是“.*”
plot(t,x);                  %绘制出信号关于变量t的波形

图形绘制如下:

2、离散信号的绘制,例:

f(k)=2*0.8^{k},-5<k<5

k=-5:5;
c=2;
d=0.8;
y=c*d.^k;    %注意是“.^”
stem(k,y);   %从k轴到数据值按茎状形式画出,以圆圈终止

图像绘制如下:

 

二、matlab求解系统的响应

对于LTI(线性时不变系统)

%求连续系统的零状态响应,t表示因变量时间,f表示输入信号,sys是系统模型
y=lsim(sys,f,t);    


%计算由差分方程描述的系统的零状态响应,a,b是差分方程左右端的系数向量,x表示输入序列
y=filter(b,a,x);  

%系统模型要借助tf函数获得,b和a分别为微分方程左右端各项系数
sys=tf(b,a);

 例:

\ddot{y}(t)+2\dot{y}(t)+77y(t)=f(t)

在t>=0时接入激励f(t)=10sin(2\pi t),求零状态响应

sys=tf([1],[1,2,77]);     %系统
t=0:0.001:5;
f=10*sin(2*pi*t);         %信号
y=lsim(sys,f,t);
plot(t,y);

图像绘制如下:

 

三、matlab求解冲激响应与阶跃响应

对于LTI(线性时不变系统)

%a和b表示系统方程左端和右端的系数向量

连续系统的冲激响应:impulse(b,a)

离散系统的冲激响应:impz(b,a,k)    %k表示输出序列的取值范围


阶跃响应:step(b,a)

例:求以下系统的冲激响应和阶跃响应

a=[7 4 6];
b=[1 1];
subplot(2,1,1)    %subplot(m,n,p) m表示图排成m行,n表示图在一行上排n列,p表示图所在的位置(从左到右从上到下)
impulse(b,a);
subplot(2,1,2)
step(b,a);

 四、卷积的matlab求解

%处理离散卷积的函数:conv(f1,f2),对序列做卷积运算

t1=0:0.001:1
ft1=2*rectpuls(t1-0.5,1); %rectpuls可产生高度为1、宽度为w、关于t=0对称的矩形脉冲信号
t2=0:0.001:2
ft2=t2;
t3=0:0.001:3
ft3=conv(ft1,ft2);
ft3=ft3*0.001;   %因为前面取了一千个样点,卷积的数值变多,要乘以0.001缩下来相当于取均了值
plot(t3,ft3)

 五、信号的频域分析

%周期信号的频谱Cn为离散信号,可以用stem画其频谱图

stem(k,abs(Cn))       %获得其幅度频谱,k为取值范围
stem(k,angle(Cn))     %获得其相位频谱


%离散周期信号的频谱分析,快速傅里叶变换

Y=fft(x)       %x是一个周期序列,Y是周期信号在频谱上的相应值

例 :

N=32; M=4;
x=[ones(1,M+1) zeros(1,N-2*M-1) ones(1,M)];   %输入信号
% plot(x);
X=fft(x);
m=0:N-1;
subplot(2,1,1);
plot(m,abs(X))    %画出幅值

subplot(2,1,2);
plot(m,angle(X))  %画出相位

得到结果

 

六、系统的频域分析

%连续系统的频率响应

H=freqs(b,a,w)    %b表示分子多项式系数,a表示分母多项式系数,w表示需计算的抽样点
plot(w,abs(H))    %画出幅值
plot(w,angle(H))  %画出相位




%离散系统的频率响应
H=freqz(b,a,w)    %b表示分子多项式系数,a表示分母多项式系数,w表示需计算的抽样点
plot(w,abs(H))    %画出幅值
plot(w,angle(H))  %画出相位

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您的问题是MATLAB信号与系统分析(三)——连续信号与系统的复频域分析及MATLAB实现。那我来回答一下。 在MATLAB中,连续信号与系统的复频域分析可以通过使用MATLAB中的fft函数和ifft函数来实现。具体步骤如下: 1. 首先,需要定义连续信号的时间范围和采样频率,生成一个时间向量t和采样间隔dt,以及信号向量x。 2. 使用fft函数将信号x转换成频域中的复数序列X。 3. 计算频率向量f,以便能够将复数序列X和频率向量f显示在同一图形中。 4. 使用ifft函数将复数序列X转换回时间域中的信号y。 5. 最后,可以使用MATLAB中的plot函数将信号x和y以及频率向量f显示在同一图形中。 下面是一个示例MATLAB代码: ```matlab % 定义信号时间范围和采样频率 t = -5:0.001:5; dt = t(2) - t(1); fs = 1/dt; % 定义信号x x = sin(2*pi*10*t) + 0.5*sin(2*pi*20*t); % 将信号x转换成频域中的复数序列X X = fft(x); % 计算频率向量f N = length(x); f = (0:N-1)*(fs/N); % 将复数序列X转换回时间域中的信号y y = ifft(X); % 显示信号x,y和频率向量f在同一图形中 figure; subplot(3,1,1); plot(t,x); xlabel('Time (s)'); ylabel('Amplitude'); title('Original Signal'); subplot(3,1,2); plot(t,y); xlabel('Time (s)'); ylabel('Amplitude'); title('Signal after IFFT'); subplot(3,1,3); plot(f,abs(X)); xlabel('Frequency (Hz)'); ylabel('Magnitude'); title('Frequency Domain'); ``` 这段代码将生成一个包含原始信号、经过ifft函数转换后的信号以及频率域的图形。通过这个示例代码,您可以学习如何在MATLAB中进行连续信号与系统的复频域分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值