设 ( ) ( cos2 ) cos2 m c y t A M f t f t = + , 其中:M=2,,fm=1000hz,A=2,fc=104hz。画出调制信号和已调信号频谱。为保证图形显 示效果,取样率 105,相应的取样间隔 dt=10-5 s。本例中新函数 fft 、fftshift。 参考程序: dt=1e-5; T=3*1e-3; t=0:dt:T; fs=1/dt; %抽样频率 df=fs/length(t); %频率分辨率 f=-fs/2:df:fs/2-df; %频率绘制区间 M=2; fm=1e3; A=2 fc=1e4 input=M*cos(2*pi*fm*t); INPUT=fft(input); %绘制调制信号频谱 %fft 函数实现从时域到频域的转换(fft—快速傅里叶变换) carrier=cos( ); envelop_AM=input+( ); output=( ).*carrier; CARRIER=fft( ); %绘制载波频谱 OUTPUT=fft( ); %绘制已调信号频谱 figure; subplot(3,1,1);plot(t,input); xlabel('时间/s');ylabel('调制信号'); ……. subplot(3,1,1); plot(f,abs(fftshift(INPUT))); % fft 变换的结果需要使用 fftshift 修正偏移 title('基带信号频谱'); % abs 函数为取修正结果的绝对值 ……. 要求:将以上程序补充完整
时间: 2023-08-03 16:08:33 浏览: 79
绘制 Gui 2d: y = f (x, t)-matlab开发
以下是完整程序:
```matlab
dt=1e-5;
T=3*1e-3;
t=0:dt:T;
fs=1/dt; %抽样频率
df=fs/length(t); %频率分辨率
f=-fs/2:df:fs/2-df; %频率绘制区间
M=2;
fm=1e3;
A=2;
fc=1e4;
input=M*cos(2*pi*fm*t);
INPUT=fft(input); %绘制调制信号频谱
figure;
subplot(3,1,1);
plot(t,input);
xlabel('时间/s');
ylabel('调制信号');
title('时域图');
subplot(3,1,2);
plot(f,abs(fftshift(INPUT))); % fft 变换的结果需要使用 fftshift 修正偏移
xlabel('频率/Hz');
ylabel('幅度');
title('基带信号频谱');
carrier=cos(2*pi*fc*t);
envelop_AM=(A+M*cos(2*pi*fm*t)).*carrier;
output=envelop_AM.*input;
CARRIER=fft(carrier); %绘制载波频谱
OUTPUT=fft(output); %绘制已调信号频谱
subplot(3,1,3);
plot(f,abs(fftshift(CARRIER)));
xlabel('频率/Hz');
ylabel('幅度');
title('载波频谱');
figure;
subplot(2,1,1);
plot(t,output);
xlabel('时间/s');
ylabel('已调信号');
title('时域图');
subplot(2,1,2);
plot(f,abs(fftshift(OUTPUT)));
xlabel('频率/Hz');
ylabel('幅度');
title('已调信号频谱');
```
程序中,第一部分是定义时间、频率等参数。然后生成调制信号,对其进行 FFT 变换并画出频谱。接下来生成载波信号和包络信号,并对其进行乘积得到已调信号。同样对载波信号和已调信号进行 FFT 变换并画出频谱。最后将时域图和频域图画在不同的子图中。
需要注意的是,在画 FFT 变换后的频谱图时,由于 FFT 变换的结果是不对称的,因此需要使用 `fftshift` 函数对其进行修正,使得图像呈现出正确的频率范围。
阅读全文