matlab fft函数用法 matlab函数fft的用法
用matlab进行fft(快速傅里叶)计算,怎么得到频谱图的复数形式?
vector(i) =tmp;频谱本来就是复数啊。
matlab fft函数用法 matlab函数fft的用法
matlab fft函数用法 matlab函数fft的用法
说figure;的是:
fft后的结果需要除以N,才能得到双边谱的值,再乘以2得到单边谱。
用matlab编程,求解啊!
举个例子:在电力系统中计算谐波。电网频率是50Hz,一个周波就是20ms,设采样是一周波256个点,即采样率是fs = 25650 = 12800Hz,dt = 1/12800,采样点N = 256个(正好一个周期),则FFT的结果也是256个点,分别对应直流量,基波(50Hz),二次谐波(100Hz),三次谐波(150Hz),直到127次谐波;剩下的129个点是个特殊点,再剩下的127个点是跟1-127次共轭对称的值。%题目要求用两种方法求解向量f的傅里叶变换
%方法一、使用Matlab的fft函数
f = [1 2 3 4 5 6 7 8]';
fft(f) %显示结果
f = [1 2 3 4 5 6 7 8]';
transform_matrix = dftmtx(8); %生成88的变换矩阵
transform_matrix f %相乘显示结果
=========================
两种方法的计算结果是一致的:
36.0F(ω) = ∫ f(t) e^(-iωt) dt000
-4.0000 + 9.6569i
-4.0000 + 4.0000i
-4.0000 + 1.6569i
-4.0000
-4.0000 - 1.6569i
-4.0000 - 9.6569i
求Matlab大神,问下fft做完以后如何写代码求得对应某个频率的幅值?
for i = 1 : N你fft得到频谱时
得到了频率横坐标 freq
幅度纵坐标 plot(t, rect); title('矩形函数'); xlabel('时间 (s)'); ylabel('幅度'); mag
如果你要知道某个频率 f0 的幅值
mag0=mag(freq==f0);
mag0就是对应f0的幅度值
如果你的f0 不在freq里 (例如 freq=[ 1 2 3 4 5 ...],你的f0是2.5),那么就需要插值
mag0=interp1(freq,mag,f0);
你好,我要用matlab对x(t)=exp(-t)u(t)做FFT的频谱分析,程序应该如何写?
ylabel('振幅');title('N=1024');grid on;>> n=0:15;
个人观点>> x=exp(-n);
>> subplot(2,1,1);stem(n,x);
>> subplot(2,1,2);stem(n,abs(fft(x)));
请教高手:如何用Matlab自己编写基2的fft函数
%%变址运算%======================================
% 频率向量%ret_val 为fft变换后返回的频域序列
%N 为点数
%vector 为变换前的序列
%======================================
vector_size = size(vector);
N = vector_size(2);
c = zeros(1,N);
%j1 = 0;
if i < j1 + 1
tmp = vector(j1 + 1);
vector(j1 + 1) = vector(i);
while k <= j1
j1 = j1 - k;
k = k / 2;
j1 = j1 + k;
%%蝶形运算
%%%%%%%%计算 N 的
dig = 0;
while k > 1
dig = dig + 1;
k = k / 2;
%%%%%%
% m 为级; dist 为蝶形运两点的距离; n 为蝶形运算组数
%n = N / 2;
for m = 1 : dig
dist = 2 ^ (m - 1);
idx = 1;
for i = 1 : n
idx1 = idx;
for j1 = 1 : N / (2 n)
r = (idx - 1) 2 ^ (dig - m);
coef = exp(j (-2 pi r / N));
tmp = vector(idx);
vector(idx) = tmp + vector(idx + dist) coef;
vector(idx + dist) = tmp - vector(idx + dist) coef;
idx = idx + 1;
ret_val = vector;
MATLAB中fft的频率轴怎么计算
按时间抽取 我有这个问题问得很不清楚,按我的理解可能是这样的:
fourier是符号函数,用于符号运算。例如:fourier(exp(-x^2),x,t)返回 pi^(1/2)exp(-1/4t^2)H是一个向量(通常意义下应该是一串等时间采样的时间序列),设H的采样率为fs,即采样时间为dt = 1/fs,采样点为N,则总时长T = Ndt。对N点序列做FFT得到的频谱,其分布区间为[0, fs),而频谱点的间隔即为df = 1/T。根据Nyquist采样定理,其中只有[0,fs/2)有信息量,剩下一半是共轭对称的。所以这段话有两个重要的信息,采样频率fs决定了可分辨的频率范围是[0,fs/2),而采样的总时长决定了频域分辨率df
如果我的理解是对的,题主想问的是要把FFT的结果n个点画出来,其横轴应该怎么设置,那就是0:1/T : (n-1)/T,而纵轴一般是两个分别画:幅值和相角。
matlab 中怎样对矩阵进行fft
N=6000; fs=12000000; n=0:N-1; %-4.0000 - 4.0000i%%num为6000000个数据k = N;值; F=fft(num); f=n/Nfs; plot(f,abs(F));
a=[2 1 4 2;3 3 3 4;1 5 4 6;0 7 2 8]
b=fft(a)
向量的话直接fft,矩阵用fft2
Matlab 信号处理的FFT问题
Fs=1000;FFT是DFT的快速算法,你看看DFT的公式,x(n)=1/N....,FFT的结果是X(k),你的这段程序 画的是X(k)的[模]的平方 再除以N,估计是能量谱吧。如果求信号的FFT,一般画幅度谱,即X(k)的;f=1000(0:512)/1024,主要是抽样频率=1000,对应的模拟频率=500,频谱图到500,而FFt的点数=1024点,对应模拟频率0~1000,所以只取一半。
end如果做谱分析,应该是=pyy=abs(Y)T,T=0.001
pyy=Y.conj(Y)/1024 相当于你画出来的图是Y的归一化模值 即 相当于 abs(Y)/1024 f=1000(0:512)/1024 相当于图中横坐标的频率归一化 作出的图为Y的模值关于f的图
关于如何用matlab做傅里叶变换的问题
idx = idx1 + 2 dist;不需要拟合 :
设抽样频率为Fs(Hz),信号点数为N,信号序列为x。
x=imread(‘’)
f = fftshift(fft(x));
w = linspace(-Fs/2, Fs/2, N);%频率坐标,单位Hz
plot(w,abs(f));
title('信号的频谱');
xlabel('频率(Hz)');
fs=10000;%采样频率
N=1000; %采样点数
n=0:N-1;
t=n/fs;
y=sin(2pit)+0.1sin(4pit)+0.01sin(8pit);
%给定信号
figure(1);
subplot(211);
plot(t,x);%绘出信号的时域波形
xxlabel('频率/Hz');label('时间/t');
ylabel('幅值');
title('信号的时域波形');
grid on;
y=fft(x,N);%进行fft变换
m=abs(y(1:N/2))2/N;%求信号的真实幅值
f=nfs/N; %进行对应的频率转换
subplot(212);
stem(f(1:N/2),m(1:N/2));%绘出频谱图
ylabel('幅值');
title('信号频谱图');
grid on;
MATLAB fft变换,横坐标为频率
m=0,1…M-1 n=0,1…N-1(3)可以用自功率密度函数或互功率谱密度函数,给你一个自功率谱:
ylabel('振幅');title('N=1024');grid on;>> fid=fopen(fni,'r')
>> sf=200
>>fno= ‘自功率谱密度 ‘
>> a=fscanf(fid,'%f',[2,inf])
>> status=fclose(fid)
>> x=a(1,:)
>> y=a(2,:)-a(1,:)
>> f=0:sf/nfft:sf/2-sf/nfft
>> w=hanning(nfft)
>> z=psd(y,nfft,sf,w,nfft/2)
>> nn=1:nfft/4
>> subplot(2,1,1)
>>plot(f(nn),abs(z(nn)))
>> xlabel('频率(Hz)')
>> ylabel('幅值(m^2/s^4)')
>> grid on
>>fid=fopen(fno,’w’)
>> for k=1:nfft/2
fprintf(fid,'%f%%%fn',f(k),abs(z(k)))
status=fclose(fid)
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。