永发信息网

在matlab中怎样用快速傅里叶变换求相位图 例如y=[1.8,2,2.2,3.2,3.5,3.7] 求程序

答案:1  悬赏:70  手机版
解决时间 2021-04-28 03:53
  • 提问者网友:你挡着我发光了
  • 2021-04-27 15:15
在matlab中怎样用快速傅里叶变换求相位图 例如y=[1.8,2,2.2,3.2,3.5,3.7] 求程序
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-04-27 16:18

y=[1.8 2 2.2 3.2 3.5 3.7]
y1=fft(y)
结果:
y =
1.8000 2.0000 2.2000 3.2000 3.5000 3.7000
y1 =16.4000 -1.4000 + 2.5981i -0.7000 + 0.3464i -1.4000 -0.7000 - 0.3464i -1.4000 - 2.5981i
再问: 这个没有采样频率可以这么用吗,那相位图要每个值的角度绘出的吗,相位图应该是横坐标是频率纵坐标是角度吧,不太理解,您能帮忙解答吗,谢谢
再答: 你知道经过傅里叶变换原来的空间域转到频域上了吧? 频域的概念是有实部有虚部的是吧,那你怎么能在平面上表示出来呢? 就用到了复数里的几个概念: 一个是虚部实部的平方和均值(sqrt( RRfdp1.^2+IIfdp1.^2);) 在一个就是夹角问题(b=angle(fftI);) 这个知识高数都有,我就不用说了吧? 关于显示的问题,给你一段程序参考。 >> fftI=fft2(I); % 获取2维离散傅里叶变化后的图像,保存到fftI >> sfftI=fftshift(fftI); % 将傅里叶变化的中心移到图像中心,保存到sfftI >> RRfdp1=real(sfftI); % 取实部 >> IIfdp1=imag(sfftI); % 取虚部 >> a=sqrt( RRfdp1.^2+IIfdp1.^2); % 取模,即实部于虚部的平方和再开方 >> a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225; % 灰度拉升,将变换后的图像拉升到0~255区间 >> figure(2) % 创建一个视图,取名2 >> imshow(real(a)); % 将图像a只取实部(如果是虚数的话),并显示在视图2中 >> b=angle(fftI); % 取虚数fftI的弧度 >> figure(3) % 创建一个视图,取名3 >> imshow(real(b)); % 将图像b只取实部(如果是虚数的话),并显示在视图3中 >> theta=30; % 角度常量 >> RR1=a*cos(theta); % RR1 = a*cos(30),注意,这里可能有错误,30度角没有转到弧度,本意可能是cos(theta/180*pi); >> II1=a*sin(theta); % II1 = a*sin(30),注意,这里可能有错误,30度角没有转到弧度,本意可能是sin(theta/180*pi); >> fftI1=RR1+i.*II1; % 得到的实部RR1和虚部II1组合成虚数fftI1 >> C=ifft2(fftI1)*255; % 2维傅里叶反变化后*255保存到C >> figure(4) % 创建一个视图,取名4 >> imshow(real(C)); % 将图像C只取实部(如果是虚数的话),并显示在视图4中 >> MM=150; % 常量 >> RR2=MM*cos(angle(fftI)); % 常量*cos(虚数fftI的弧度) >> II2=MM*sin(angle(fftI)); % 常量*sin(虚数fftI的弧度) >> fftI2=RR2+i.*II2; % 得到新的虚数fftI2 >> D=ifft2(fftI2); % 2维傅里叶反变化 >> figure(5) % 创建一个视图,取名5 >> imshow(real(D)); % 将图像D只取实部(如果是虚数的话),并显示在视图5中
再问: 你的意思是说任何一组数据都可以用快速傅里叶变换转到频域上而无需考虑先决条件,如采样频率的限制要求
再答: 当你使用fft(x)的时候,采样参数是机器定的。 Y = fft(X) Y = fft(X,n) Y = fft(X,[],dim) Y = fft(X,n,dim) fft有很多形式,如果想设置采样频率等,自己设置即可。 详情help fft


我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯