用matlab生成三角波信号,绘制其时域频域波形。然后对上述信号做AM调制,绘制其时域频域图,之后再尝试不同的调幅系数,绘制时域图
时间: 2024-05-09 17:16:34 浏览: 119
模拟调制技术:AM:计算和绘制调幅信号的波形-matlab开发
首先,生成一个三角波信号可以使用matlab中的sawtooth函数,代码如下:
```matlab
fs = 1000; %采样率
t = 0:1/fs:1; %时间序列
f = 5; %信号频率
x = sawtooth(2*pi*f*t); %生成三角波信号
```
接下来,我们可以通过matlab中的fft函数对信号进行傅里叶变换,并绘制出其频域波形:
```matlab
N = length(x); %信号长度
X = fft(x)/N; %傅里叶变换
f = linspace(0,fs/2,floor(N/2)+1); %频率序列
X_magnitude = 2*abs(X(1:floor(N/2)+1)); %计算幅值
plot(f,X_magnitude); %绘制频域图
xlabel('Frequency (Hz)'); ylabel('Magnitude');
```
对三角波信号进行AM调制,可以使用matlab中的ammod函数,代码如下:
```matlab
fc = 100; %载波频率
Ac = 1; %载波幅值
m = 0.5; %调幅系数
y = ammod(x,fc,fs,m,Ac); %AM调制信号
```
同样地,我们可以对AM调制信号进行傅里叶变换,绘制出其频域波形:
```matlab
N = length(y); %信号长度
Y = fft(y)/N; %傅里叶变换
f = linspace(0,fs/2,floor(N/2)+1); %频率序列
Y_magnitude = 2*abs(Y(1:floor(N/2)+1)); %计算幅值
plot(f,Y_magnitude); %绘制频域图
xlabel('Frequency (Hz)'); ylabel('Magnitude');
```
最后,我们可以尝试不同的调幅系数,绘制出其时域波形:
```matlab
m_values = [0.1,0.3,0.5,0.7,0.9]; %不同的调幅系数
figure;
for i = 1:length(m_values)
m = m_values(i);
y = ammod(x,fc,fs,m,Ac); %AM调制信号
subplot(length(m_values),1,i);
plot(t,y); %绘制时域图
xlabel('Time (s)'); ylabel('Amplitude');
title(['m = ',num2str(m)]);
end
```
完整代码如下:
```matlab
fs = 1000; %采样率
t = 0:1/fs:1; %时间序列
f = 5; %信号频率
x = sawtooth(2*pi*f*t); %生成三角波信号
N = length(x); %信号长度
X = fft(x)/N; %傅里叶变换
f = linspace(0,fs/2,floor(N/2)+1); %频率序列
X_magnitude = 2*abs(X(1:floor(N/2)+1)); %计算幅值
subplot(2,1,1);
plot(t,x); %绘制时域图
xlabel('Time (s)'); ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(f,X_magnitude); %绘制频域图
xlabel('Frequency (Hz)'); ylabel('Magnitude');
title('Frequency Spectrum');
fc = 100; %载波频率
Ac = 1; %载波幅值
m = 0.5; %调幅系数
y = ammod(x,fc,fs,m,Ac); %AM调制信号
N = length(y); %信号长度
Y = fft(y)/N; %傅里叶变换
f = linspace(0,fs/2,floor(N/2)+1); %频率序列
Y_magnitude = 2*abs(Y(1:floor(N/2)+1)); %计算幅值
figure;
subplot(2,1,1);
plot(t,y); %绘制时域图
xlabel('Time (s)'); ylabel('Amplitude');
title('AM Modulated Signal');
subplot(2,1,2);
plot(f,Y_magnitude); %绘制频域图
xlabel('Frequency (Hz)'); ylabel('Magnitude');
title('Frequency Spectrum');
m_values = [0.1,0.3,0.5,0.7,0.9]; %不同的调幅系数
figure;
for i = 1:length(m_values)
m = m_values(i);
y = ammod(x,fc,fs,m,Ac); %AM调制信号
subplot(length(m_values),1,i);
plot(t,y); %绘制时域图
xlabel('Time (s)'); ylabel('Amplitude');
title(['m = ',num2str(m)]);
end
```
阅读全文