信号
能量和功率是积分的关系
能量信号(类比电路里的功):一般指能量有限信号
功率信号(类比电路里的功率)
小结
能量有限、功率为零的信号为能量信号。
能量无限、功率有限的信号为功率信号。
所有有界的周期信号都是功率信号;所有有限数量的脉冲信号都是能量信号。
参考链接
信号运算
傅里叶变换fft
有关文章
MATLAB傅里叶命令有两种:
-
Y= fft(x) ,其中,x 为一个序列(向量),存放采集信号的数据;
-
另外一种Y= fft(x,n),x 的定义同上,n 定义计算数据的个数,如果n 大于x 的长度,在x 的末尾添加0,使得x 的长度等于n。如果n小于x的长度,截取x 中的前n 个数来进行计算。Y 返回fft 的结果,为一个复数序列(向量)。
Y的结果是复数,幅值根据复数的模而来,相位角根据复数的角度来的。
线性振幅谱的纵坐标有明确的物理量纲,是最常用的。
对数振幅谱中各谱线的振幅都作了对数计算,所以其纵坐标的单位是dB(分贝)。20*lg(abs(Y)/Y0)表示成dB值,Y0取为1.
示例1(现在采用的代码)
L = size(data); % 信号长度
NFFT = 2^nextpow2(L);
F = fs/2*linspace(0,1,NFFT/2+1); %(0:1:N/2)*Fs/N 实际信号第n点处的频率是n*Fs/N
Y = fft(data,NFFT)/L; %除以L乘以2
y = 2*abs(Y(1:NFFT/2+1,:)); %只取了一半
plot(F,y);
title('频谱图');
xlabel('频率/Hz');
ylabel('幅值');
示例2(代码参见)
%傅里叶变换
Y=fft(y); %Y为fft变换结果,复数向量,保证y是偶数
Y=Y(1:N/2+1); %只看变换结果的一半即可
A=abs(Y); %复数的幅值(模)
f=(0:1:N/2)*Fs/N; %生成频率范围
f=f'; %转置成列向量
%%幅值修正
A_adj=zeros(N/2+1,1);
A_adj(1)=A(1)/N; %频率为0的位置,只除以N
A_adj(end)=A(end)/N; %频率为Fs/2的位置,只除以N
A_adj(2:end-1)=2*A(2:end-1)/N; %频率为其他位置,除以N乘以2
fft变换后为什么要处理
频率处理
幅值处理
fftshif函数:https://zhuanlan.zhihu.com/p/36163931
窗函数
窗函数实际就是乘以一个权重,图为不同的窗函数
窗函数处理后幅值会改变,因此需要乘以恢复系数。
时频分析之傅里叶变换
存在问题
1.傅里叶分析的长度是不是越长越好?采样频率越高越好?
t=[0:0.02:60*60]';
data_acc=sin(2*t)+randn(size(t))+sin(t)+5*randn(size(t));
% 原始数据
plot(t,data_acc)
当分析数据为60*60,即60分钟,与真实值相同,而10分钟仅仅是接近??
50Hz和500Hz
2.什么时候对数据进行平滑,数据开始也需要平滑吗?fft后也要平滑吗?
功率谱密度
概念
能量谱密度:单位是焦耳/Hz。针对能量有限的信号,能量信号傅里叶变换绝对值的平方就是能量谱(密度)【帕塞瓦尔定理】。
功率谱密度(PSD):单位是功率/Hz。针对功率有限信号的(能量有限信号用能量谱密度),所表现的是单位频带内信号功率随频率的变换情况。
功率谱和功率谱密度是不同的。若能量为E,时间为T,频带为F,则功率谱是表示为E/T;而功率谱密度是表示为E/T/F。所以它们的量纲和单位是不同的,表示了不同的物理量。但又由有常把功率谱当作功率谱密度的简称,所以经常容照耀混淆。
我们需要的是功率谱密度。
实现
互功率谱:cpsd
实信号的PSD分布通常关于频率0左右偶对称。这样的正负频率范围的功率谱密度称之为“双边”(Two-Side)PSD。当然我们也可以仅用正频率范围表示,这时候称之为“单边”(One-Side)PSD。
希黄变换
概念
实现
时频分析
实现
MATLAB短时傅里叶变换函数spectrogram:spectrogram(data, window, noverlap, nfft,fs, 'yaxis');
小波变换:[coefs,f] = cwt(s,wave,Fs);
希黄变换