1、调用信号产生函数mstg产生三路抑制载波调幅信号相加构成的复合信号st。 2、要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB。 3、编程序调用MATLAB滤波器设计函数ellipord和ellip分别设计这三个椭圆滤波器,并绘图显示其幅频响应特性曲线。 4、调用滤波器实现函数filter,用三个滤波器分别对信号产生函数mstg产生的信号st进行滤波,分离出st中的三路不同载波频率的调幅信号y1(n)、y2(n)和y3(n), 并绘图显示y1(n)、y2(n)和y3(n)的时域波形,观察分离效果。
时间: 2024-03-10 19:44:08 浏览: 266
数字信号处理第四版实验四信号产生函数mstg清单
5星 · 资源好评率100%
这是一个较为复杂的信号处理问题,需要编程实现。以下是一个可能的解决方案,供参考:
1. 调用信号产生函数mstg产生三路抑制载波调幅信号相加构成的复合信号st。
```matlab
% 生成三路调幅信号
fc1 = 1000; % 载波频率1
fc2 = 2000; % 载波频率2
fc3 = 3000; % 载波频率3
fs = 8000; % 采样频率
t = 0:1/fs:1-1/fs; % 时域采样点
m1 = 1.5*sin(2*pi*50*t); % 调制信号1
m2 = 2*sin(2*pi*100*t); % 调制信号2
m3 = 1*sin(2*pi*200*t); % 调制信号3
ac1 = 1; % 调幅信号1的幅度
ac2 = 0.5; % 调幅信号2的幅度
ac3 = 1; % 调幅信号3的幅度
s1 = ac1*(1+m1).*sin(2*pi*fc1*t); % 调幅信号1
s2 = ac2*(1+m2).*sin(2*pi*fc2*t); % 调幅信号2
s3 = ac3*(1+m3).*sin(2*pi*fc3*t); % 调幅信号3
st = s1 + s2 + s3; % 复合信号
```
2. 要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB。
```matlab
% 确定滤波器参数
n = 800; % 采样点数
f = linspace(0, fs, n); % 频率向量
Y = fft(st, n); % FFT
A = abs(Y); % 幅度谱
Adb = 20*log10(A/max(A)); % 幅度谱(dB)
figure;
plot(f, Adb); % 绘制幅频特性曲线
xlabel('频率/Hz');
ylabel('幅值/dB');
title('复合信号幅频特性曲线');
% 低通滤波器
fp1 = 1200; % 通带截止频率
fs1 = 1000; % 阻带截止频率
Rp1 = 0.1; % 通带最大衰减
Rs1 = 60; % 阻带最小衰减
[n1, Wn1] = ellipord(fp1/(fs/2), fs1/(fs/2), Rp1, Rs1); % 计算滤波器阶数和截止频率
[b1, a1] = ellip(n1, Rp1, Rs1, Wn1); % 计算滤波器系数
% 带通滤波器
fp2 = [1800, 2200]; % 通带截止频率
fs2 = [1500, 2500]; % 阻带截止频率
Rp2 = 0.1; % 通带最大衰减
Rs2 = 60; % 阻带最小衰减
[n2, Wn2] = ellipord(fp2/(fs/2), fs2/(fs/2), Rp2, Rs2); % 计算滤波器阶数和截止频率
[b2, a2] = ellip(n2, Rp2, Rs2, Wn2); % 计算滤波器系数
% 高通滤波器
fp3 = 2800; % 通带截止频率
fs3 = 3200; % 阻带截止频率
Rp3 = 0.1; % 通带最大衰减
Rs3 = 60; % 阻带最小衰减
[n3, Wn3] = ellipord(fp3/(fs/2), fs3/(fs/2), Rp3, Rs3); % 计算滤波器阶数和截止频率
[b3, a3] = ellip(n3, Rp3, Rs3, Wn3); % 计算滤波器系数
```
3. 编程序调用MATLAB滤波器设计函数ellipord和ellip分别设计这三个椭圆滤波器,并绘图显示其幅频响应特性曲线。
```matlab
% 绘制滤波器幅频响应特性曲线
[h1, w1] = freqz(b1, a1, n, fs);
[h2, w2] = freqz(b2, a2, n, fs);
[h3, w3] = freqz(b3, a3, n, fs);
figure;
plot(w1, 20*log10(abs(h1)), 'r', w2, 20*log10(abs(h2)), 'g', w3, 20*log10(abs(h3)), 'b');
xlabel('频率/Hz');
ylabel('幅值/dB');
title('滤波器幅频响应特性曲线');
legend('低通滤波器', '带通滤波器', '高通滤波器');
```
4. 调用滤波器实现函数filter,用三个滤波器分别对信号产生函数mstg产生的信号st进行滤波,分离出st中的三路不同载波频率的调幅信号y1(n)、y2(n)和y3(n), 并绘图显示y1(n)、y2(n)和y3(n)的时域波形,观察分离效果。
```matlab
% 用滤波器分离三路调幅信号
y1 = filter(b1, a1, st);
y2 = filter(b2, a2, st);
y3 = filter(b3, a3, st);
% 绘制时域波形
figure;
subplot(3, 1, 1);
plot(t, y1);
xlabel('时间/s');
ylabel('幅度');
title('低通滤波器输出信号');
subplot(3, 1, 2);
plot(t, y2);
xlabel('时间/s');
ylabel('幅度');
title('带通滤波器输出信号');
subplot(3, 1, 3);
plot(t, y3);
xlabel('时间/s');
ylabel('幅度');
title('高通滤波器输出信号');
```
以上程序仅供参考,具体实现可能因应用场景和需求而异。
阅读全文