声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1286|回复: 4

[FFT] 分离谐波

[复制链接]
发表于 2010-10-6 20:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
求助:
手上有一些采集的电压数据,谐波含量比较大,需要分析出各次谐波的含量,频率是50Hz,采样频率是1000Hz,有5000个离散的点。 我怎样才能从里面分离出三次谐波,五次谐波,并求出他们各自所占比例呢?本人新手,求高手解答。
回复
分享到:

使用道具 举报

发表于 2010-10-6 21:14 | 显示全部楼层
这个容易啊,求FFT变换,然后在频域范围应用傅里叶级数展开(复数形式),则每个谐波频率对应于频率轴上的一个点。
发表于 2010-10-6 21:58 | 显示全部楼层
clc;
clear all;
Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t) + 0.8*sin(2*pi*200*t)++ 0.8*sin(2*pi*250*t);
y =2*randn(size(t));     % Sinusoids plus noise
%y=x;

figure;
plot(Fs*t(1:50),y(1:50));
title('Signal Corrupted with Zero-Mean Random Noise');
xlabel('time (milliseconds)');
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2);
% DetaF=2*(f(2)-f(1))*NFFT/Fs;
%DetaF=Fs/NFFT;
DetaF=2*(f(2)-f(1))/Fs;
%DetaF=f(2)-f(1);

% Plot single-sided amplitude spectrum.
figure;
plot(f,2*abs(Y(1:NFFT/2)))
title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('|Y(f)|');

% Note : 验算傅立叶展开合理性
for i=1:NFFT/2
   y1(i)=0;   
   for j=1:NFFT/2
    y1(i)=y1(i)+Y(j)*L*DetaF*exp(2.*pi*1i*f(j)*t(i));
   end
   y1(i)=real(y1(i));
end

figure;
plot(Fs*t(1:50),y(1:50),'r-',Fs*t(1:50),y1(1:50),'b-');
 楼主| 发表于 2010-10-7 20:15 | 显示全部楼层
回复 irongreat 的帖子

谢谢 程序我先看看
发表于 2010-10-8 09:39 | 显示全部楼层
你注意下,DetaF=f(2)-f(1),把系数2/Fs移到后面循环中去
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 22:16 , Processed in 0.061000 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表