matlab画图,频率谱密度图

要在 MATLAB 中绘制幅度调制(AM)和双边带抑制载波(DSB-SC)的功率谱密度(PSD)图,以及基带信号和解调信号的时域和频域图,可以按照以下步骤操作:

  1. 生成基带信号:选择一个简单的信号,如正弦波。
  2. 生成载波信号:用于调制的高频正弦波。
  3. 生成 AM 和 DSB-SC 信号:使用基带信号和载波信号。
  4. 解调信号:恢复原始基带信号。
  5. 计算并绘制功率谱密度:使用 MATLAB 的 pwelch 函数。
  6. 绘制时域和频域图:使用 fft 函数计算频域表示。

相关matlab代码:

% 参数设置
Fs = 1000;           % 采样频率
t = 0:1/Fs:1;        % 时间向量
fc = 100;            % 载波频率
fm = 5;              % 消息信号频率

% 基带信号(消息信号)
mt = cos(2*pi*fm*t); 

% 载波信号
ct = cos(2*pi*fc*t);

% AM 调制
AM = (1 + mt) .* ct;

% DSB-SC 调制
DSBSC = mt .* ct;

% 解调 AM 信号
demod_AM = AM .* ct;
[b, a] = butter(4, 0.1);   % 低通滤波器
demod_AM = filtfilt(b, a, demod_AM);

% 计算功率谱密度
pwelch(AM,[],[],[],Fs);
title('AM Signal PSD');

figure;
pwelch(DSBSC,[],[],[],Fs);
title('DSB-SC Signal PSD');

% 计算频域
Mf = abs(fftshift(fft(mt)));
f = (-Fs/2:Fs/length(t):Fs/2 - Fs/length(t));

% 绘制基带信号的时域和频域图
figure;
subplot(2,1,1);
plot(t, mt);
title('Baseband Signal in Time Domain');
xlabel('Time (s)');
ylabel('Amplitude');

subplot(2,1,2);
plot(f, Mf);
title('Baseband Signal in Frequency Domain');
xlabel('Frequency (Hz)');
ylabel('Magnitude');

% 绘制解调 AM 信号的时域和频域图
demod_AM_Freq = abs(fftshift(fft(demod_AM)));
figure;
subplot(2,1,1);
plot(t, demod_AM);
title('Demodulated AM Signal in Time Domain');
xlabel('Time (s)');
ylabel('Amplitude');

subplot(2,1,2);
plot(f, demod_AM_Freq);
title('Demodulated AM Signal in Frequency Domain');
xlabel('Frequency (Hz)');
ylabel('Magnitude');

仿真结果:

 

 

 

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
结果是一种信号处理技术,在MATLAB中可以使用一些函数来生成双结果。以下是一些MATLAB函数的示例,可以用来生成双结果: 1. `spectrogram`函数:这个函数可以将信号分成多个时间窗口,并在每个窗口上计算功率密度。双结果可以通过将功率密度矩阵相乘来生成。以下是一个示例代码: ```matlab % 生成双结果 fs = 1000; % 采样频率 t = 0:1/fs:1; % 时间向量 f = [10 20]; % 信号频率 x = sin(2*pi*f(1)*t) + sin(2*pi*f(2)*t); % 生成信号 window = hann(256); % 窗口函数 noverlap = 128; % 重叠长度 nfft = 512; % FFT长度 [S,F,T,P] = spectrogram(x,window,noverlap,nfft,fs); % 计算功率密度 Sxx = P*P'; % 计算双结果 imagesc(F,F,Sxx) % 画图 axis([0 max(F) 0 max(F)]) xlabel('Frequency (Hz)') ylabel('Frequency (Hz)') ``` 2. `cpsd`函数:这个函数可以计算两个信号的交叉功率密度。双结果可以通过将两个功率密度矩阵相乘来生成。以下是一个示例代码: ```matlab % 生成双结果 fs = 1000; % 采样频率 t = 0:1/fs:1; % 时间向量 f1 = 10; % 信号1频率 f2 = 20; % 信号2频率 x1 = sin(2*pi*f1*t); % 信号1 x2 = sin(2*pi*f2*t); % 信号2 window = hann(256); % 窗口函数 noverlap = 128; % 重叠长度 nfft = 512; % FFT长度 [S1,F,T,P1] = spectrogram(x1,window,noverlap,nfft,fs); % 计算信号1的功率密度 [S2,F,T,P2] = spectrogram(x2,window,noverlap,nfft,fs); % 计算信号2的功率密度 Cxy = cpsd(x1,x2,window,noverlap,nfft); % 计算交叉功率密度 Sxy = abs(Cxy).^2; % 计算双结果 imagesc(F,F,P1*P2'.*Sxy) % 画图 axis([0 max(F) 0 max(F)]) xlabel('Frequency (Hz)') ylabel('Frequency (Hz)') ``` 这些函数只是MATLAB中可用的一些函数,可以根据需要使用其他函数来生成双结果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值