matlab计算功率谱的四种方法

devtools/2025/1/21 7:18:40/

%{
计算功率谱的四种方法,前三种方法采用归一化频率,第四种方法采用原始频率
%}

matlab">clear;clc;close all;
% 生成一个示例时间序列(例如正弦波加上一些随机噪声)
t = 0:0.01:100-0.1;  % 时间向量
% x = sin(t) + 0.5 * randn(size(t));  % 正弦波加噪声
x = sin(20*pi*t);%% 使用 pwelch 计算功率谱
% 输入信号 x,窗口大小为 256,重叠为 128,采样频率为 1 Hz
[pxx, f] = pwelch(x, 256, 128, [], 1);% 绘制功率谱
figure;
plot(f, 10*log10(pxx));  % 使用对数尺度绘制功率谱(dB)
title('功率谱 (使用 Welch 方法)');
xlabel('频率 (Hz)');
ylabel('功率 (dB)');%% 使用 periodogram 计算功率谱
[pxx, f] = periodogram(x, [], [], 1);% 绘制功率谱
figure;
plot(f, 10*log10(pxx));  % 使用对数尺度绘制功率谱(dB)
title('功率谱 (使用 Periodogram 方法)');
xlabel('频率 (Hz)');
ylabel('功率 (dB)');%% 直接使用fft
% 计算信号的 FFT
X = fft(x);% 计算功率谱
pxx = abs(X).^2 / length(x);  % 计算功率谱
f = (0:length(x)-1) / length(x);  % 频率轴% 绘制功率谱
figure;
plot(f, 10*log10(pxx));  % 使用对数尺度绘制功率谱(dB)
title('功率谱 (使用 FFT 方法)');
xlabel('频率 (Hz)');
ylabel('功率 (dB)');%% 使用自相关函数的方法
% 计算自相关函数
[R, lags] = xcorr(x, 'biased');
% 计算功率谱
N = length(x);  % 信号长度
Fs = 100;  % 采样频率% 获取自相关函数的一半(因为自相关函数是对称的)
R_half = R(N:end);% 计算自相关函数的傅里叶变换,得到功率谱
S = abs(fft(R_half));
f = (0:length(S)-1) * (Fs / length(S));  % 频率轴% 可选:将功率谱转换为dB
S_dB = 10 * log10(S);
figure;
plot(f, S_dB);  % 显示dB功率谱
xlabel('Frequency (Hz)');
ylabel('Power (dB)');
title('Power Spectrum using Autocorrelation');

http://www.ppmy.cn/devtools/152286.html

相关文章

【opencv】第10章 角点检测

第10章 角点检测 10.1 Harris角点检测 10.1.1 兴趣点与角点 在图像处理和与计算机视觉领域,兴趣点(interest points),也被称作关键点 (key points)、特 征 点(feature points)。它被大量用于解决物体识别、图像识别、 图像匹配、视觉跟踪、三维重建等一系列的问题…

GoLang 微服务学习笔记

https://www.bilibili.com/video/BV1Gg4y1u77D/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 目录 第1讲:为什么说云原生重构了互联网产品开发模式? https://www.bilibili.com/video/BV1Gg4y1u77D?spm_i…

MySQL字符串函数详解

简介 本文主要讲解MySQL中的字符串函数,包括:left、right、ltrim、rtrim、trim、upper、lower、lpad、rpad、concat、concat_ws、instr、substr、length、char_length、replace、reverse、char、ascii。 left函数 语法:left(str,length)&a…

Kotlin 2.1.0 入门教程(三)

变量 在 Kotlin 中,可以通过关键字 val 或 var 声明变量,后跟变量名称。 使用 val 关键字声明只能赋值一次的变量。这些是不可变的、只读的局部变量,初始化后不能重新赋值。 fun main() {val a 1val b: Int 2println("a $a, b $b…

【STM32-学习笔记-8-】I2C通信

文章目录 I2C通信Ⅰ、硬件电路Ⅱ、IIC时序基本单元① 起始条件② 终止条件③ 发送一个字节④ 接收一个字节⑤ 发送应答⑥ 接收应答 Ⅲ、IIC时序① 指定地址写② 当前地址读③ 指定地址读 Ⅳ、MPU6050---6轴姿态传感器(软件I2C)1、模块内部电路2、寄存器地…

Java ArrayList

Java ArrayList 从名字就可以看得出来,ArrayList 实现了 List 接口,并且是基于数组实现的。 有人就会问了 那ArrayList和数组有什么区别呢 数组的大小是固定的,一旦创建的时候指定了大小,就不能再调整了。也就是说,…

1166 Summit (25)

A summit (峰会) is a meeting of heads of state or government. Arranging the rest areas for the summit is not a simple job. The ideal arrangement of one area is to invite those heads so that everyone is a direct friend of everyone. Now given a set of tenta…

【js进阶】设计模式之单例模式的几种声明方式

单例模式&#xff0c;简言之就是一个类无论实例化多少次&#xff0c;最终都是同一个对象 原生js的几个辅助方式的实现 手写forEch,map,filter Array.prototype.MyForEach function (callback) {for (let i 0; i < this.length; i) {callback(this[i], i, this);} };con…