用matlab产生一个频率1Hz、功率为1的余弦信源,设载波频率10 Hz,A=2,请给出以下三个问题的matlab代码并写好注释 (1)AM信号的波形; (2)AM信号的功率谱密度; (3)相干解调...
时间: 2024-02-06 09:10:34 浏览: 18
以下是三个问题的matlab代码和注释:
(1)生成AM信号的波形:
```matlab
% 设置参数
f_c = 10; % 载波频率
f_m = 1; % 信源频率
A = 2; % 载波幅度
P = 1; % 信源功率
% 生成余弦信源
t = 0:0.001:1; % 时间范围为1s
x = cos(2*pi*f_m*t);
% 生成AM信号
y = (1 + A*x) .* cos(2*pi*f_c*t);
% 绘制波形图
plot(t, y);
xlabel('时间');
ylabel('幅度');
title('AM信号波形');
```
(2)生成AM信号的功率谱密度:
```matlab
% 设置参数
f_c = 10; % 载波频率
f_m = 1; % 信源频率
A = 2; % 载波幅度
P = 1; % 信源功率
% 生成余弦信源
t = 0:0.001:1; % 时间范围为1s
x = cos(2*pi*f_m*t);
% 生成AM信号
y = (1 + A*x) .* cos(2*pi*f_c*t);
% 计算功率谱密度
N = length(y); % 信号长度
Y = fft(y); % 进行傅里叶变换
Pyy = Y.*conj(Y)/(N^2); % 计算功率谱密度
% 绘制功率谱密度图
f = linspace(-0.5, 0.5, N);
plot(f,fftshift(Pyy));
xlabel('频率');
ylabel('功率谱密度');
title('AM信号功率谱密度');
```
(3)进行相干解调:
```matlab
% 设置参数
f_c = 10; % 载波频率
f_m = 1; % 信源频率
A = 2; % 载波幅度
P = 1; % 信源功率
% 生成余弦信源
t = 0:0.001:1; % 时间范围为1s
x = cos(2*pi*f_m*t);
% 生成AM信号
y = (1 + A*x) .* cos(2*pi*f_c*t);
% 解调信号
z = y .* cos(2*pi*f_c*t);
% 低通滤波
Fc = 10; % 设置截止频率
Wn = (2/Fc)*1000; % 归一化截止频率
[b,a] = butter(10, Wn, 'low'); % 生成10阶巴特沃斯低通滤波器
z_filt = filter(b,a,z); % 进行滤波
% 绘制解调后的信号波形图
plot(t, z_filt);
xlabel('时间');
ylabel('幅度');
title('解调后波形');
```
需要注意的是,这里使用了一个10阶巴特沃斯低通滤波器进行滤波,截止频率设置为载波频率。这是因为在解调过程中,需要滤除高频成分,只保留低频成分,从而得到原始信号。