MATLAB 信号与系统实验一:常用基本信号的表示和运算
常用基本信号的 MATLAB 表示和运算
本实验将介绍几种常见的信号,并使用 MATLAB 对其进行表示和运算。
1. 正弦信号的 MATLAB 表示和运算
正弦信号可以表示为:
$$x(t) = A\sin(\omega t + \phi)$$
其中,$A$ 为振幅,$\omega$ 为角频率,$\phi$ 为相位。
在 MATLAB 中,可以使用 sin 函数来表示正弦信号:
% 定义正弦信号的参数
A = 2;
omega = 2*pi*50;
phi = pi/4;
% 生成正弦信号
t = linspace(0, 0.1, 1000);
x = A*sin(omega*t+phi);
% 绘制正弦信号图像
figure;
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Sinusoidal Signal');
其中,linspace 函数用于生成时间轴上的时间点,从 0 到 0.1 秒,共生成 1000 个点。
2. 方波信号的 MATLAB 表示和运算
方波信号可以表示为:
$$x(t) = \begin{cases} -A, & -T/2 \leq t < 0,
A, & 0 \leq t < T/2. \end{cases}$$
其中,$A$ 为振幅,$T$ 为周期。
在 MATLAB 中,可以使用 square 函数来表示方波信号:
% 定义方波信号的参数
A = 2;
T = 0.02;
% 生成方波信号
t = linspace(0, 0.1, 1000);
x = A*square(2*pi*(1/T)*t);
% 绘制方波信号图像
figure;
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Square Wave Signal');
其中,square 函数的第一个参数为角频率,即 $2\pi/T$。
3. 三角波信号的 MATLAB 表示和运算
三角波信号可以表示为:
$$x(t) = \begin{cases} \frac{4A}{T}t, & -T/2 \leq t < 0,
\frac{-4A}{T}t+2A, & 0 \leq t < T/2. \end{cases}$$
其中,$A$ 为振幅,$T$ 为周期。
在 MATLAB 中,可以使用 sawtooth 函数来表示三角波信号:
% 定义三角波信号的参数
A = 2;
T = 0.02;
% 生成三角波信号
t = linspace(0, 0.1, 1000);
x = A*sawtooth(2*pi*(1/T)*t, 0.5);
% 绘制三角波信号图像
figure;
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Triangle Wave Signal');
其中,sawtooth 函数的第一个参数为角频率,即 $2\pi/T$,第二个参数为占空比,即波峰和波谷的比例。
4. 矩形脉冲信号的 MATLAB 表示和运算
矩形脉冲信号可以表示为:
$$x(t) = \begin{cases} A, & 0 \leq t < \tau,
0, & \text{otherwise}. \end{cases}$$
其中,$A$ 为振幅,$\tau$ 为脉冲宽度。
在 MATLAB 中,可以使用 rectpuls 函数来表示矩形脉冲信号:
% 定义矩形脉冲信号的参数
A = 2;
tau = 0.01;
% 生成矩形脉冲信号
t = linspace(0, 0.1, 1000);
x = A*rectpuls(t, tau);
% 绘制矩形脉冲信号图像
figure;
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Rectangular Pulse Signal');
其中,rectpuls 函数的第一个参数为时间轴,第二个参数为脉冲宽度。
5. MATLAB 中常用信号的运算
MATLAB 中常用的信号运算有:
(1) 加法运算
% 生成两个正弦信号
t = linspace(0, 0.1, 1000);
x1 = 2*sin(2*pi*50*t);
x2 = 3*sin(2*pi*80*t);
% 对两个信号进行加法运算
x = x1 + x2;
% 绘制加和信号图像
figure;
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Sum of Two Sinusoidal Signals');
(2) 乘法运算
% 生成两个正弦信号
t = linspace(0, 0.1, 1000);
x1 = 2*sin(2*pi*50*t);
x2 = 3*sin(2*pi*80*t);
% 对两个信号进行乘法运算
x = x1 .* x2;
% 绘制积信号图像
figure;
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Product of Two Sinusoidal Signals');
(3) 卷积运算
% 生成两个矩形脉冲信号
t = linspace(0, 0.1, 1000);
x1 = rectpuls(t, 0.01);
x2 = rectpuls(t, 0.02);
% 对两个信号进行卷积运算
x = conv(x1, x2);
% 绘制卷积信号图像
t_conv = linspace(0, 0.2, 1999);
figure;
plot(t_conv, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Convolution of Two Rectangular Pulse Signals');
在进行卷积运算时,需要注意时间轴的变化。卷积后的时间轴长度为两个信号时间轴长度之和减一。
原文地址: https://www.cveoy.top/t/topic/onBL 著作权归作者所有。请勿转载和采集!