信号与系统matlab实验(一)

1、已知微分方程y’’(t)+2y’(t)+50y(t)=x(t),求该系统的冲激响应波形h(t),和单位阶跃响应波形h1(t).

这个微分方程可以写成标准的二阶线性微分方程形式:

{y}''(t)+2{y}'(t)+50y(t)=x(t)

对应的传递函数是: 

H(s)=\frac{Y(s)}{X(s)}=\frac{1}{s^{2}+2s+50} 

在 MATLAB 中,可以使用 tf 函数来定义这个传递函数,然后使用 impulsestep 函数来分别计算冲激响应和单位阶跃响应。

运行代码:

% 定义传递函数
numerator = [1];
denominator = [1 2 50];  % s^2 + 2s + 50
sys = tf(numerator, denominator);

% 计算冲激响应
t = 0:0.01:5;  % 时间向量
[h, t_impulse] = impulse(sys, t);

% 计算单位阶跃响应
[h1, t_step] = step(sys, t);

% 绘制图形
figure;  % 创建一个新的图形窗口
plot(t_impulse, h, 'b', t_step, h1, 'r--');  % 冲激响应用蓝色实线,单位阶跃响应用红色虚线
title('System Responses');
xlabel('Time (s)');
ylabel('Amplitude');
legend('Impulse Response h(t)', 'Step Response h1(t)');

仿真结果:

 

2、求下列各信号从-\infty+\infty的积分。

(1)x(t)=e^{-|t|}                (2)x(t)=\begin{cases} & 0.5[1+cos(2\pi t)]\text{, } |t|\leq 0.5 \\ &0 \text{ , } |t|> 0.5 \end{cases}

matlab代码:

syms t;

% 第一个信号 x(t) = e^(-|t|)
x1 = exp(-abs(t));
integral_1 = int(x1, t, -inf, inf);

% 第二个信号 x(t) = 0.5[1 + cos(2*pi*t)] for |t| <= 0.5, and 0 for |t| > 0.5
x2 = 0.5 * (1 + cos(2 * pi * t));
integral_2 = int(x2, t, -0.5, 0.5);

% 显示结果
disp('积分结果 1: ');
disp(integral_1);

disp('积分结果 2: ');
disp(integral_2);

 运行结果:

 

3、计算x(t)=e^{t}与h(t)=(3e^{-2t}-1)ε(t)的卷积(注:利用卷积的定义编程)。

matlab代码:

syms t tau;

% 定义函数 x(t) 和 h(t)
x_t = exp(t);
h_t = (3 * exp(-2 * tau) - 1) * heaviside(tau);

% 计算卷积
convolution = int(x_t * subs(h_t, tau, t - tau), tau, -5, t);

% 显示卷积结果
fplot(convolution, [-5 5]);
title('Convolution of x(t) and h(t)');
xlabel('t');
ylabel('(x * h)(t)');
grid on;

运行结果:

4、求-\frac{1}{\pi t^{2}}的傅里叶变换,并绘制其频谱图。

matlab代码:

syms t w;

% 定义函数
f = -1 / (pi * t^2);

% 计算傅里叶变换
F_w = fourier(f, t, w);

% 绘制频谱图
fplot(abs(F_w), [-10 10]);
title('Fourier Transform of -1 / (\pi t^2)');
xlabel('\omega');
ylabel('|F(\omega)|');
grid on;

 运行结果:

要用MATLAB解一个二阶系统的单位阶跃响应曲线,你需要首先定义系统的传递函数或状态空间模型。假设你已经有了这个模型,可以按照以下步骤进行: 1. 定义传递函数或状态空间模型 假设你的传递函数为: $$G(s) = \frac{K}{(s+p_1)(s+p_2)}$$ 其中,$K$ 是系统的增益,$p_1$ 和 $p_2$ 是系统的极点。 或者,如果你的状态空间模型为: $$ \begin{aligned} \dot{x}(t) &= Ax(t) + Bu(t) \\ y(t) &= Cx(t) + Du(t) \end{aligned} $$ 其中,$x(t)$ 是系统的状态向量,$u(t)$ 是输入信号,$y(t)$ 是输出信号,$A$、$B$、$C$ 和 $D$ 分别是状态空间模型的系数矩阵。 2. 使用MATLAB定义传递函数或状态空间模型 对于传递函数模型,你可以使用MATLAB中的tf函数来定义传递函数: ```matlab K = 1; % 系统增益 p1 = -1; % 极点1 p2 = -2; % 极点2 G = tf(K, [1 p1 p2]); % 定义传递函数模型 ``` 对于状态空间模型,你可以使用MATLAB中的ss函数来定义状态空间模型: ```matlab A = [0 1; -p1 -p2]; % 状态空间模型系数矩阵 A B = [0; K]; % 状态空间模型系数矩阵 B C = [1 0]; % 状态空间模型系数矩阵 C D = 0; % 状态空间模型系数矩阵 D sys = ss(A, B, C, D); % 定义状态空间模型 ``` 3. 解单位阶跃响应曲线 对于传递函数模型,你可以使用MATLAB中的step函数来解单位阶跃响应曲线: ```matlab t = 0:0.1:10; % 时间范围 [y, t] = step(G, t); % 解单位阶跃响应曲线 plot(t, y); % 绘制响应曲线 ``` 对于状态空间模型,你可以使用MATLAB中的step函数来解单位阶跃响应曲线: ```matlab t = 0:0.1:10; % 时间范围 u = ones(size(t)); % 输入信号为单位阶跃函数 [y, t] = lsim(sys, u, t); % 解单位阶跃响应曲线 plot(t, y); % 绘制响应曲线 ``` 这样就可以使用MATLAB解一个二阶系统的单位阶跃响应曲线了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值