查看: 311|回复: 1|关注: 0

[未答复] matlab 重采样后FFT

[复制链接]

新手

10 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 2018-6-18 19:25:50 | 显示全部楼层 |阅读模式
大家好,课题涉及到光谱数据先转换到波数空间,再重采样,最后做FFT得到不同深度的信息。现在自己编程用'spline'插值,直接fft的数据不行,怎么在插值后重采样?下面是我的程序:(附件里是原始波长数据的txt文档)clear all;clc;t=0:2047;
tt=0:0.1:2047;
load G:\z1.txt;
y1=z1;
y2=hilbert(y1);  %y1希尔伯特变换
xr=real(y2);
xi=imag(y2);
P1=atan2(xi,xr);    %y1包裹相位
phase1=unwrap(P1);  %y1解包裹相位
load G:\z2.txt;
y3=z2;
y4=hilbert(y3); %y2希尔伯特变换
xr=real(y4);
xi=imag(y4);
P2=atan2(xi,xr);%y2解包裹相位
phase2=unwrap(P2);%y2解包裹相位
phase3=phase2-phase1;%y1和y2相位差
phase4=floor(2*3.14*200000/1260);%初始相位
phase=phase3+phase4;
lamda=4*3.14*100000./phase;%波长
% figure(6)
% plot(t,lamda,'r')
% title '波长图'
figure
A=sort(lamda,'ascend'); %波长升序排序
daA=max(A);
xiA=min(A);
w=min(A):0.005:max(A)
plot(A,y1);
title('波长空间')
k=2*3.14./lamda;%波长波数转换
B=sort(k,'ascend'); %波数降序排序
figure  
plot(B,y1);
title('k空间')
y4=abs(fft(y1));%对y1做fft后取绝对值
figure  
plot(B,y4);
title('插值前FFT')
dak=max(B);
xik=min(B);
x=xik:0.00000002:dak;
y5=interp1(B,y1,x,'spline');
figure
y6=abs(fft(y5));
plot(y6)
title ‘插值后FFT’


z1.txt

13.95 KB, 下载次数: 0

z2.txt

14.14 KB, 下载次数: 0

新手

10 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
 楼主| 发表于 2018-6-19 10:06:31 | 显示全部楼层
追加:就是CCD采到的数据为波长线性的,但是后期图像重建需要波数线性,所以要把波长空间转到波数空间,通过插值把波数空间线性化,最后FFT就得到了深度信息。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

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