功率谱密度

本文介绍了如何在Matlab中生成一个间谐时程信号,然后利用pwelch函数计算其功率谱密度。通过示例展示了如何找到并标记功率谱中的峰值频率。
摘要由CSDN通过智能技术生成

第一次:

clear
clc
close all

% 生成间谐时程信号
fs = 1000; % 采样频率为 1000 Hz
t = (0:1/fs:300)'; % 时间从0到300秒,步长为采样间隔
signal = sin(2*pi*0.1*t) + sin(2*pi*0.1*t) +rand(length(t),1);

% 使用pwelch计算功率谱密度函数
[pxx, f] = pwelch(signal, [], [], [], fs);

% 绘制信号波形
figure;
subplot(2,1,1);
plot(t, signal);
title('间谐时程信号');
xlabel('时间 (秒)');
ylabel('幅值');

% 绘制功率谱密度函数
subplot(2,1,2);
plot(f, 10*log10(pxx));
title('功率谱密度函数');
xlabel('频率 (Hz)');
ylabel('功率谱密度 (dB/Hz)');
xlim([0 1])

% 标记峰值点
[peak_values, peak_indices] = findpeaks(10*log10(pxx), 'MinPeakHeight', 10); % 这里设置了一个峰值的最小高度
hold on;
scatter(f(peak_indices), peak_values, 'r', 'filled');
text(f(peak_indices), peak_values, num2str(round(f(peak_indices), 2)), 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'right');

hold off;

第二次:

clear

clc

close all

rng default;

fs = 200;

t = 0:1/fs:30-1/fs;

x = cos(2*pi*1*t);

wdlength=1024;

overlap=wdlength*0.5;

[pxx,f] = pwelch(x,wdlength,overlap,fs*100,fs);

plot(f,pxx)

xlabel('Frequency (Hz)')

xlim([0 5])

ylabel('PSD (dB/Hz)')


 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值