MATLAB语言,h=0.6.^[0:3]; x=ones(1.4); yFFT=ifft(X.*H,L) ;le=0:1:length(x)-1; stem(le,x) ;

MATLAB语言,h=0.6.^[0:3]; x=ones(1.4); yFFT=ifft(X.*H,L) ;le=0:1:length(x)-1; stem(le,x) ;,第1张

你的程序有多孙行处错误。

(1)MATLAB区分大小写,所以前面用了小写的x和h,后面也要用小写的x和h

(2)“L”这个变量根本没定义,就直接用了,这样程序是不能运行的

(3)如果我没猜错的话,x=ones(1,4)中间应该是逗号,不是1.4

所以比较合理的程序应该是这样:

h=0.6.^[0:3]

x=ones(1,4)

yFFT=ifft(x.*h)

le=0:1:length(x)-1

stem(le,x)

它的意思是:

第一句:

信道的频域响应有4点,分别是1, 0.6, 0.6^2, 0.6^3

第二句:

输入信扰凯枝缓敏号x的频域特性是4点的序列,每个点都是1,就是x=[1 1 1 1]

第三句:信号通过信道,就是频域对应相乘,也就是x.*h,

然后做IFFT变换到时域,如果你原来有个参数L,就是要做L点的IFFT,如果没有,就默认跟点数不变,此处就是4点IFFT。所以yFFT这个变量就是信号通过信道之后的时域形状。

最后两句:

划入命令,画出x的图像 。(此处不是很理解,为什么求出了yFFT,不去画yFFT的图,反而画x的图??)

在图象处理的广泛应用领域中,傅立叶变换起着非常重要的作用,具体表现在包括图象分析、图象增强及图象压缩等方面。

fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。因为直接用fft得出的数据与频率不是对应的,fftshift可以纠正过来。

假设f(x,y)是一个离散空间中的二维函数,则该函数的二维傅立叶变换的定义如下:

p=0,1…M-1 q=0,1…N-1 (1)

或 p=0,1…M-1 q=0,1…N-1 (2)

离散傅立叶反变换的定义如下:

m=0,1…M-1 n=0,1…N-1(3)

F(p,q)称为f(m,n)的离散傅立叶变换系数。这个式子表明,函数f(m,n)可以用无数个不同频率的复指数信号和表示,而在频率(w1,w2)处的复指数信号的幅度和相位是F(w1,w2)。

2、MATLAB提供的快速傅立叶变换函数

(1)fft2

fft2函数用于计算二维快速傅立蠢备叶变换,其语法格式为:

B = fft2(I)

B = fft2(I)返回图象I的二维fft变换矩阵,输入图象I和输出图象B大小相同。

例如,计算图象的二维傅立叶变换,并显示其幅值的结果,如图所示,其命令格式如下

load imdemos saturn2

imshow(saturn2)

B = fftshift(fft2(saturn2))

imshow(log(abs(B)),[],'notruesize')

(2)fftshift

MATLAB提供的fftshift函数用于将变换后的图象频谱中心从矩阵的原点移到矩阵的中心,其语法格式为:

B = fftshift(I)

对于矩阵I,B = fftshift(I)将I的一、三象限和二、四象限进行互换。

(2)ifft2

ifft2函数用于计算图象的二维傅立叶反变换,其语法格睁缺式为:

B = ifft2(I)

B = ifft2(A)返回图象I的二维傅立叶反变换矩阵,输入图象I和输出图象B大小相同。其语法格式含义与fft2函数的语法格式相同,可以参考fft2函数的说明。

如果信号是二维的,用上面的函数即可!直接调用。

如果信号是一维的,给你下面的例子带早毁,你应该能明白!

clear

fs=100N=128 %采样频率和数据点数

n=0:N-1t=n/fs %时间序列

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)%信号

y=fft(x,N) %对信号进行快速Fourier变换,逆变换函数为ifft

mag=abs(y)%求得Fourier变换后的振幅

f=n*fs/N %频率序列

subplot(2,2,1),plot(f,mag) %绘出随频率变化的振幅

xlabel('频率/Hz')

ylabel('振幅')title('N=128')grid on

subplot(2,2,2),plot(f(1:N/2),mag(1:N/2))%绘出Nyquist频率之前随频率变化的振幅

xlabel('频率/Hz')

ylabel('振幅')title('N=128')grid on

%对信号采样数据为1024点的处理

fs=100N=1024n=0:N-1t=n/fs

x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)%信号

y=fft(x,N) %对信号进行快速Fourier变换

mag=abs(y) %求取Fourier变换的振幅

f=n*fs/N

subplot(2,2,3),plot(f,mag)%绘出随频率变化的振幅

xlabel('频率/Hz')

ylabel('振幅')title('N=1024')grid on

subplot(2,2,4)

plot(f(1:N/2),mag(1:N/2))%绘出Nyquist频率之前随频率变化的振幅

xlabel('频率/Hz')

ylabel('振幅')title('N=1024')grid on


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12556666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存