FFT的输入和输出具体代表什么意思啊

2020-11-24 07:39:35 字数 7199 阅读 9752

1楼:匿名用户

fft结果的物理意义

http://****ourdev.**/bbs/bbs_content.jsp?bbs_sn=3944963&bbs_page_no=1&bbs_id=9999

这里讲到了如何从fft结果中计算出信号的幅度。

直流分量幅度=幅度/n,交流分量幅度=幅度/(n/2)fft结果的解释

解释fft的第一步是计算每个fft频率单元中心的绝对频率。fft频率单元间距,与dft类似,是采样频率(fs)与fft样点数的比值,或fs/n。nfft的输出为x(m),m=0,1,2,3,...

,n-1,第m个频率单元中心的绝对频率为mfs/n。如果fft的驶入时间采样值为实数,x(m)的输出仅为从m=0到m=n/2是独立的。因此,在这种情况下, 我们仅需要在m的范围为0≤m≤n/2内确定fft频率单元中心的绝对频率。

如果fft输入时间采样值为复数,fft输出的所有n个采样值是相互独立的。我们要在0≤m≤n-1全部范围内确定fft个频率单元中心的绝对频率。

matlab中函数fft的输入量与输出量各是什么

2楼:飞龙在天

fs=1000;%对连续信号进行量化处理,即对原始信号进行采样,这里是采样率,单位hz

ts=1/fs;%采样间隔

t=0:ts:1.3;

x=sin(2*pi*50*t)+sin(2*pi*300*t);

%y=@(t) sin(2*pi*50*t)+sin(2*pi*300*t);

f=x+3.5*randn(1,length(t));

subplot(411);plot(t,f);

ylabel('幅值');xlabel('时间');title('原始信号');

nfft= 2^nextpow2(length(f));%找出大于y的个数的最大的2的指数值

y=fft(f,nfft);%对f信号进行dft,得到频率的幅值分布

p=y.*conj(y)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。

ff=fs*(0:nfft/2-1)/nfft;% f f t 变换后对应的频率的序列

subplot(412);plot(ff,p(1:nfft/2));

ylabel('功率谱密度');xlabel('频率');title('信号功率谱');

%------论坛上看到的求fft的方法

subplot(413);plot(ff,abs(y(1:nfft/2)));%(用这个,先取点数后求模)

ylabel('幅值');xlabel('频率');title('单边幅频谱');

%------matlab例子的求fft的方法

subplot(414);plot(ff,2*abs(y(1:nfft/2))/length(f));%(用这个,先取点数后求模)

ylabel('幅值');xlabel('频率');title('单边幅频谱');

%振幅的大小与所用dft采样点数(nfft)有关,采用不同的dft采样点数对同一信号,振幅是有不同的表现值

3楼:日向淳正

输入是时域值,输出量是频域值.对应关系就是fft啊,呵呵

4楼:匿名用户

输入是时域序列,输出量是频域序列. 你用help fft看一下不就知道了!

pscad中fft元件输入输出接口的含义是什么啊求解

5楼:鹏飙

相位,幅值和直流分量,可以通过查看help文件了解详细信息。

离散傅里叶变换dft 和fft 输入的参数是什么,计算出来的又是什么?

6楼:匿名用户

1,简单的用的话,输bai入参数为一系列的du数据点,例如在zhimatlab中,先定dao义

t=0:0.01:1;

y=sin(t);

dft(y);

即输入参数版

其实是100个数据点值权,要求稍微高点的,可以用dft(y,n),n代表采样频率,即采样点数,按照采样定理,采样频率须大于2倍的样本的频率,一般去5倍,根据离散傅里叶的原理,n一般取2的整数立方,可以取256,512,1024等。即便你不取这些数,在系统内部计算时,它也是按照这些数进行采样计算的。

2.傅里叶变换就是频谱分析,输出的是对应不同频率该函数的幅值是多少。

fft输入输出长度的问题。**急等~

7楼:金色潜鸟

fft输入长度应当是 2 的 整数次方。不满足时,后面添0,凑足到最近的 2 的 整数次

方。例如,1000 个数,后面添0,凑足到1024 -- 最近的 2 的 整数次方。

输出 个数 是 1024 (复数)。

matlab y=fft(x,n) 实际上是 dft, 输入数,多于 n, 只用 n 个,不足n个,添0到 n 个。输出 为 n 个 (复数)。matlab 的 y=fft(x) 按帮助文件,它等同 y=fft(x,n),只是 n = size(x)。

至于matlab 如何用 fft技术,但输出数据个数不是 2 的 整数次方个数。是不是做了一次插值

不清楚。

fft结果输出多少个数?

8楼:anyway中国

与输入数据有关,傅里叶窗口点数多少,输出就是多少点。输出数据实际有效的只有前1/2的数据,因为后1/2是前1/2的复制品。

此外,fft要求窗口点数为2的n次幂,若输入点数不等于2^n,会在后面自动补零。

9楼:琴鸣千里

多少点fft就输出多少个数

10楼:匿名用户

点数的1/2,如1024点fft,输出512条谱线。

fft的输出为何不是一条线?

11楼:anyway中国

时域离散,频域必然连续,反之,频率连续,时域必然离散。

fft是快速离散傅里叶变换,时域是离散时间信号,频域一定是连续信号,这是不可避免的。

如何决定要使用多少点来做fft

12楼:啥名字好呢呢呢

fft程序,输入是一组复数,输出也是一组复数,想问一下输入到底应该输入什么,输出的复数的含义是什么?给定一组序列的抽样值,如何用fft确定它的频率?

首先,fft函数出来的应该是个复数,每一个点分实部虚部两部分。假设采用1024点fft,采样频率是fs,那么第一个点对应0频率点,第512点对应的就是fs/2的频率点。然后从头开始找模值最大的那个点,其所对应的频率值应该就是你要的基波频率了。

fft是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用fft变换的原因。

另外,fft可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

虽然很多人都知道fft是什么,可以用来做什么,怎么去做,但是却不知道fft之后的结果是什么意思、如何决定要使用多少点来做fft。一个模拟信号,经过adc采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号频率的两倍,这些我就不在此罗嗦了。

采样得到的数字信号,就可以做fft变换了。n个采样点,经过fft之后,就可以得到n个点的fft结果。为了方便进行fft运算,通常n取2的整数次方。

假设采样频率为fs,信号频率f,采样点数为n。那么fft之后结果就是一个为n点的复数。每一个点就对应着一个频率点。

这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为a,那么fft的结果的每个点(除了第一个点直流分量之外)的模值就是a的n/2倍。

而第一个点就是直流分量,它的模值就是直流分量的n倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即0hz),而最后一个点n的再下一个点(实际上这个点是不存在的,这里是假设的第n+1个点,可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率fs,这中间被n-1个点平均分成n等份,每个点的频率依次增加。

例如某点n所表示的频率为:fn =(n-1)*fs/n。由上面的公式可以看出,fn所能分辨到频率为 fs/n,如果采样频率fs为1024hz,采样点数为1024点,则可以分辨到1hz。

1024hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做fft,则结果可以分析到1hz,如果采样2秒时间的信号并做fft,则结果可以分析到0.5hz。如果要提高频率分辨力,则必须增加采样点数,也即采样时间。

频率分辨率和采样时间是倒数关系。假设fft之后某点n用复数a+bi表示,那么这个复数的模就是an=根号a*a+b*b,相位就是pn=atan2(b,a)。根据以上的结果,就可以计算出n点(n≠1,且n<=n/2)对应的信号的表达式为:

an/(n/2)*cos(2*pi*fn*t+pn),即2*an/n*cos(2*pi*fn*t+pn)。对于n=1点的信号,是直流分量,幅度即为a1/n。由于fft结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。

好了,说了半天,看着公式也晕,下面以一个实际的信号来做说明。假设我们有一个信号,它含有2v的直流分量,频率为50hz、相位为-30度、幅度为3v的交流信号,以及一个频率为75hz、相位为90度、幅度为1.5v的交流信号。

用数学表达式就是如下:

s=2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180)

式中cos参数为弧度,所以-30度和90度要分别换算成弧度。我们以256hz的采样率对这个信号进行采样,总共采样256点。按照我们上面的分析,fn=(n-1)*fs/n,我们可以知道,每两个点之间的间距就是1hz,第n个点的频率就是n-1。

我们的信号有3个频率:0hz、50hz、75hz,应该分别在第1个点、第51个点、第76个点上出现峰值,其它各点应该接近0。实际情况如何呢?

我们来看看fft的结果的模值如图所示。

从图中我们可以看到,在第1点、第51点、和第76点附近有比较大的值。我们分别将这三个点附近的数据拿上来细看:

1点: 512+0i

2点: -2.6195e-14 - 1.4162e-13i

3点: -2.8586e-14 - 1.1898e-13i

50点:-6.2076e-13 - 2.1713e-12i

51点:332.55 - 192i

52点:-1.6707e-12 - 1.5241e-12i

75点:-2.2199e-13 -1.0076e-12i

76点:3.4315e-12 + 192i

77点:-3.0263e-14 +7.5609e-13i

很明显,1点、51点、76点的值都比较大,它附近的点值都很小,可以认为是0,即在那些频率点上的信号幅度为0。接着,我们来计算各点的幅度值。分别计算这三个点的模值,结果如下:

1点: 512

51点:384

76点:192

按照公式,可以计算出直流分量为:512/n=512/256=2;50hz信号的幅度为:384/(n/2)=384/(256/2)=3;75hz信号的幅度为192/(n/2)=192/(256/2)=1.

5。可见,从频谱分析出来的幅度是正确的。然后再来计算相位信息。

直流信号没有相位可言,不用管它。先计算50hz信号的相位,atan2(-192, 332.55)=-0.

5236,结果是弧度,换算为角度就是180*(-0.5236)/pi=-30.0001。

再计算75hz信号的相位,atan2(192, 3.4315e-12)=1.5708弧度,换算成角度180*1.

5708/pi=90.0002。可见,相位也是对的。

根据fft结果以及上面的分析计算,我们就可以写出信号的表达式了,它就是我们开始提供的信号。

总结:假设采样频率为fs,采样点数为n,做fft之后,某一点n(n从1开始)表示的频率为:fn=(n-1)*fs/n;该点的模值除以n/2就是对应该频率下的信号的幅度(对于直流信号是除以n);该点的相位即是对应该频率下的信号的相位。

相位的计算可用函数atan2(b,a)计算。atan2(b,a)是求坐标为(a,b)点的角度值,范围从-pi到pi。要精确到xhz,则需要采样长度为1/x秒的信号,并做fft。

要提高频率分辨率,就需要增加采样点数,这在一些实际的应用中是不现实的,需要在较短的时间内完成分析。解决这个问题的方法有频率细分法,比较简单的方法是采样比较短时间的信号,然后在后面补充一定数量的0,使其长度达到需要的点数,再做fft,这在一定程度上能够提高频率分辨力。

具体的频率细分法可参考相关文献。

附录:本测试数据使用的matlab程序

close all; %先关闭所有**

adc=2; %直流分量幅度

a1=3; %频率f1信号的幅度

a2=1.5; %频率f2信号的幅度

f1=50; %信号1频率(hz)

f2=75; %信号2频率(hz)

fs=256; %采样频率(hz)

p1=-30; %信号1相位(度)

p2=90; %信号相位(度)

n=256; %采样点数

t=[0:1/fs:n/fs]; %采样时刻

%信号s=adc+a1*cos(2*pi*f1*t+pi*p1/180)+a2*cos(2*pi*f2*t+pi*p2/180);

%显示原始信号

plot(s);

title('原始信号');

figure;

y = fft(s,n); %做fft变换

ayy = (abs(y)); %取模

plot(ayy(1:n)); %显示原始的fft模值结果

title('fft 模值');

figure;

ayy=ayy/(n/2); %换算成实际的幅度

ayy(1)=ayy(1)/2;

f=([1:n]-1)*fs/n; %换算成实际的频率值

plot(f(1:n/2),ayy(1:n/2)); %显示换算后的fft模值结果

title('幅度-频率曲线图');

figure;

pyy=[1:n/2];

for i="1:n/2"

pyy(i)=phase(y(i)); %计算相位

pyy(i)=pyy(i)*180/pi; %换算为角度

end;

plot(f(1:n/2),pyy(1:n/2)); %显示相位图

title('相位-频率曲线图');

轴承上的数字和字母的含义,轴承上的数学和字母代表什么意思啊?

1楼 丫头再爱我一次 轴承的型号可以分为前段 中段和后段三个部分。 前段 从右向左 第一位用英文字母表示精度等级,第二位用数字表示游隙组别。 中段用七位数字 从右向左 分别表示 1 2 内径尺寸代号 3 直径系列代号 4 类型代号 5 6 结构形式代号 7 宽度系列代号 后段用数字和字母分别表示补充...

变压器的型号代表什么意思翱,变压器的型号代表什么意思啊?

1楼 老怒 单从型号看不出是升压变还是降压变,也看不出是主变还是起备变,只能看出变压器容量大小和部分结构形式 sfp9 400000 220 s 三相,f 风冷,p 强迫油循环,即冷却装置带油泵,9为设计序号,代表损耗水平,400000 容量为400000kva,220 高压侧系统额定电压为220k...

输入法上的全和半是什么意思?如题谢谢了

1楼 予希 1 全角 指一个字符 占用两个标准字符位置。 汉字字符和规定了全角的英文字符及国标gb2312 80中的图形符号和特殊字符都是全角字符。一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。 2 半角 指一字符占用一个标准的字符位置。 通常的英文字母 数字键 符号键都是半角...