傅里叶变换轮廓术的MATLAB GUI设计与仿真
[转载]MATLAB中傅里叶fft函数使用(仿真程序和图形结果)
[转载]MATLAB中傅⾥叶fft函数使⽤(仿真程序和图形结
果)
原⽂地址:MATLAB中傅⾥叶fft函数使⽤(仿真程序和图形结果)作者:西电⼤宝Chuck
MATLAB中的傅⾥叶变换时是⾮常常⽤的,研究信号处理时不可避免,尤其在频域。
这是⼀个例⼦,使⽤MATLAB时对于信号的采样频率选择很重要,⾸先要满⾜奈奎斯特采样定理,
然后最好选择4倍以上的奶奎斯特采样频率作为fs,这样绘制出的图形和结果才能⽐较精确直观。
N=512;fs=1200;%采样点数和采样频率
n=0:N-1;t=n/fs;%时间序列
y=sin(2*pi*50*t)+sin(2*pi*120*t);%定义⼀个含有50hz和120hz两种频率的信号
Y=fft(y,N);%快速傅⾥叶变换
f=n*fs/N;%频率序列
Y=abs(Y);%求模
plot(f,Y);%绘制信号频域图形
仿真结果:课件两个频率在50和120hz处
推荐⼀⾸歌,我很喜欢 small things,是不是很舒服西电⼤宝。
基于Matlab的傅里叶变换性质仿真
强教 学效 果 。
其对应的频谱 , 可以得 出结论 : 信号 f ( a t ) 的带宽是
信号 f ( t ) 带宽的 a 倍 。我们可 以播放一段 门铃音 f ( t ) , 正常播放 时持续时间为 1 . 2 s ; 将播放时间压缩 为0 . 6 s , 相当于 f ( 2 t ) , 听起来感觉声音频率变高了 ;
冲激函数 ; f - j 函数的傅里叶变换为抽样 函数 ; 抽样信
e
号的傅里叶变换则应为门函数 。 用 Ma t l a b 分别绘出 抽样信号 f i ( t ) = S a ( t ) 和门信号  ̄ ( t ) - r r g 2 ( t ) 的时域 波形及频谱 , 仿真结果如图一所示 , 上一行从左到右
形图,我们知道后一信号相对于前一信号仅仅是发 生了平移 , 这就比较好理解 了。 用 Ma t l a b 分别绘出 f i ( t ) = 1 e - 2 t u ( t ) ; i f ( t ) =1
2
则: F ( t ) + + 2 T T f ( 一【 ^ J ) 。 我们都知道冲激信号的傅里 叶变换的幅度谱 为常数 ; 直流信号的傅里叶变换为
上 的波 形相 同 。
1 . 2时域 平移 性质
幅度谱 , 可 以看到平移后信号的幅度谱未变, 三信号 的幅度谱重叠 ; 下图是信号的的相位谱 , 三个信号的
相位 谱是 不 同的 。
1 . 3 频 域平 移性 质
假设 函数 f ( t ) + ÷ F ( 【 ^ J ) 构成一傅里 叶变 换对 , 则: it f +t 0 ) + + e J  ̄ F ( j t o o信号时域平移 , 则在频域 上只是附加 了一个线性相位 , 我们这样来理解 : 正弦 信号 s i n ( t ) 和s i n ( t + 4 5 。 ), 两个 信号幅度 、 频率是 相同的 , 区别仅仅是在初始相位上 , 画出两信号的波
matlab绘制方波傅里叶变换代码
一、引言Matlab是一款功能强大的数学软件,可以进行多种数学运算和数据可视化处理。
其中,绘制方波并进行傅里叶变换是其常用的功能之一。
本文将介绍如何使用Matlab绘制方波并进行傅里叶变换的代码。
二、绘制方波1. 打开Matlab软件,创建一个新的脚本文件。
2. 输入以下代码用于绘制方波:```matlabt = linspace(0, 1, 1000); 生成时间序列f = square(2*pi*5*t); 生成频率为5Hz的方波plot(t, f); 绘制方波图形xlabel('Time (s)'); X轴标签ylabel('Amplitude'); Y轴标签title('Square Wave'); 图形标题```3. 运行代码,即可在Matlab中看到绘制的方波图形。
三、进行傅里叶变换1. 接下来,我们将对绘制的方波进行傅里叶变换。
2. 输入以下代码进行傅里叶变换:```matlabL = length(t); 信号的长度N = 2^nextpow2(L); 计算最近的2的幂Y = fft(f, N)/L; 进行傅里叶变换frequencies = 1/(2*1)*linspace(0,1,N/2); 计算频率amplitude = 2*abs(Y(1:N/2)); 计算幅值plot(frequencies, amplitude); 绘制傅里叶变换图形xlabel('Frequency (Hz)'); X轴标签ylabel('Amplitude'); Y轴标签title('Fourier Transform of Square Wave'); 图形标题```3. 运行代码,即可在Matlab中看到绘制的傅里叶变换图形。
四、总结通过以上步骤,我们成功地使用Matlab绘制了方波并进行了傅里叶变换。
基于MATLAB GUI平台连续时间信号的傅里叶变换系统设计
基于 MATLAB GUI 平台的连续时间信号的傅里叶变化与傅里叶 反变换系统平台的设计报告
院系: 电子信息与电气工程学院
专业: 光电信息科学与工程
班级: 2016 级光电 1 班
学号:
201614590117
作者:
郭艳喜
基于 MATLAB GUI 平台连续时间信号傅里叶变换与傅里叶反变换系统的开发课题报告 光电班 郭艳喜 学号:201614590117
%启用 axes1
ezplot(f3);
%在 axes1 中绘制原函数图像
grid on;
%打开网格
an=char(ifourier(f3));
%获取傅里叶变换
set(handles.t14,'string',an);
%给显示窗口赋值
ft2=sym(get(handles.t14,'string'));
三、 连续时间信号的傅里叶变换与傅里叶反变换系统的设计开发
(一)设计的基本内容 本系统主要针对信号与系统中的连续时间信号处理部分,通过 GUI 平台输入一个函数可以 对连续时间信号进行傅里叶变换、对频域信号进行傅里叶反变换以及两种信号的原信号、变 换信号的图像绘制,本系统的傅里叶变换与傅里叶反变换通过 fourier()和 ifourier() 函数实现;绘图功能用通 ezplot()函数数实现。经过测试可以对信号进行傅里叶变换和反 变换,但在绘图师由于某些函数可能包含一些不能直接用符号表达的式子,所以变换后的图 像绘制存在一定问题。
基于 MATLAB GUI 的连续时间信号的傅里叶变换与傅里叶反变换系统的开发,主要涉及两 个方面的问题:1.MATLAB GUI 的图形设计;2.用 MATLAB 傅里叶变换分析的建模与仿真。
Matlab在工程设计与仿真中的应用案例
Matlab在工程设计与仿真中的应用案例近年来,Matlab(全称Matrix Laboratory)在工程设计与仿真中的应用越来越广泛。
Matlab是一款功能强大的计算软件,具有矩阵计算、数据处理和可视化等多种功能。
本文将通过几个实际案例,展示Matlab在工程设计与仿真中的应用。
一、电路设计与仿真电路设计是工程领域中重要的一环,而Matlab提供了强大的电路设计与仿真工具。
以滤波器设计为例,Matlab配备了丰富的滤波器设计函数,可以根据特定的滤波系数和频响要求,快速设计出满足需求的滤波器。
同时,Matlab还支持频域仿真,可以对信号进行傅里叶变换和滤波操作,以实现不同的信号处理需求。
二、机械系统建模与控制在机械系统建模与控制方面,Matlab也发挥了重要的作用。
例如,在机械结构设计中,Matlab可以通过有限元分析建立结构的数值模型,对结构的强度、刚度等进行分析与求解。
同时,Matlab还支持控制系统建模与仿真,可以通过控制系统的设计,提高机械系统的性能和稳定性。
三、通信系统设计与仿真通信系统设计与仿真是Matlab应用的另一个重要领域。
例如,在无线通信系统设计中,Matlab提供了丰富的信号处理工具,可以对传输信号进行调制、解调和通道编码等操作,实现数据的可靠传输。
此外,Matlab还支持多输入多输出系统的建模与仿真,可以分析和优化系统的传输性能。
四、图像处理与计算机视觉近年来,图像处理和计算机视觉成为热门的研究领域。
而Matlab提供了一系列的图像处理函数与工具箱,可以进行图像的滤波、分割、特征提取和目标识别等操作。
通过Matlab的强大功能,研究人员可以开展多样化的图像处理与计算机视觉应用,如人脸识别、车牌识别等。
五、仿真与优化算法Matlab凭借其强大的数值计算能力和优化算法,成为工程设计中的重要辅助工具。
例如,在电力系统中,Matlab可以应用潮流计算和稳定性分析等算法,发现潮流分布、电压质量等问题,优化电力系统的稳定性和效率。
傅里叶变换轮廓术的Matlab仿真实现
傅里叶变换轮廓术的Matlab仿真实现吴应山;张启灿【摘要】在傅里叶变换轮廓术测量方法中,测量系统从一个角度投影结构光场,系统中的成像装置从另一个角度获取由物体高度调制后的变形光场,并通过傅里叶变换、频域滤波和傅里叶逆变换恢复出物体的高度信息.FTP测量方法中,关于傅里叶变换,相位展开的相关知识,涉及大量复杂的数学运算使其抽象难以理解.针对这一问题,文中设计了基于Matlab的仿真实验.根据相应原理编写了仿真代码,运用Matlab的数学运算和可视化功能,模拟整个测量流程,完成了仿真实验.这有助于学习和理解FTP测量方法原理及相关知识.%In the method of Fourier transform profilometry (FTP), the measurement system obtains the deformation ofthe object height modulated light field by the imaging device, and restores the height information of the object through the Fourier transform, frequency domain filtering and Fourier inverse transformation.The Fourier transform and phase unwrapping knowledge in the FTP measurement method involves a large number of complex mathematical calculations, making it abstract and difficult to understand.In view of this situation, we design simulation experiments based on Matlab and prepare the corresponding simulation codes.The entire measurement process is simulated by using Matlab numerical calculation and visualization function, which helps to understand the principles of the FTP measurement.【期刊名称】《电子科技》【年(卷),期】2017(030)006【总页数】4页(P9-12)【关键词】傅里叶变换轮廓术;Matlab;相位展开【作者】吴应山;张启灿【作者单位】四川大学电子信息学院,四川成都 610064;四川大学电子信息学院,四川成都 610064【正文语种】中文【中图分类】TN29随着计算机技术的发展,三维数字化技术逐步成熟,并广泛用于各个领域[1-3],傅里叶变换轮廓术是1983年由M.Takeda和K.Mutoh将傅里叶变换用于三维物体的测量中而提出的三维面形测量技术[4],只需采集一或两幅变形条纹图,就可以进行三维重构,实现对物体轮廓的测量。
傅里叶变换及带通滤波器仿真Matlab试验报告
傅里叶变换及带通滤波器仿真Matlab试验报告一.实验目的1.学习软件matlab的编辑语言、绘图、函数等功能的运用2.了解傅里叶级数的复数形式表示方波,并运用matlab绘出。
3.熟悉带通滤波器的工作原理,并用matlab仿真带通滤波器,绘出相应的图形,最后用pspice验证。
二.实验平台1. Matlab7.02. Pspice三.实验内容实验一用matlab模拟计算傅里叶分量叠加近似方波的过程,并将叠加过程用图形表示,最后画出谐波的振幅频谱。
实验原理1.根据傅里叶定理,任何一个角频率为ω的周期函数都可以表示成无穷多个频率为ω整数倍的正弦函数和余弦函数之和。
2.将傅里叶级数交流分量各项相叠加后,可得到原始的方波信号。
参加叠加的傅里叶分量越多,其和就越接近原来的方波。
3.谐波的振幅随频率的增加而快速减少。
实验步骤1.设计叠加傅里叶交流分量的算法。
2.打开Matlab,编辑程序实现算法。
3.运用Matlab的绘图函数将叠加过程用图形表示。
4.用Matlab绘出振幅频谱图。
实验程序代码%时间t从0到2,每隔0.001秒取一点t=0:0.001:pi;y=0;%通过循环绘出a小于等于5和a=16时的图像for a=1:6n=2*a-1y=y+4./(n*pi)*sin(n*pi*t);figure(1)subplot(2,3,a);plot(t,y,'-g')xlabel('Time');ylabel('F');ends=0;for b=1:16s=s+4./((b*2-1)*pi)*sin((b*2-1)*pi*t);endplot(t,s,'-g')%绘出振幅频谱图像figure(2)k=1:2:12;A=4./(k*pi);bar(k,A,0.1);实验结果傅里叶波形图振幅频谱图实验结果分析与结论1.根据傅里叶波形图可以看出,通过逐项叠加傅里叶级数交流分量可以形成原始方波。
有关傅里叶变换的MATLAB仿真
有关傅里叶变换的MATLAB仿真Homework 1:1) Determine the DFT of sequence x(n)=R4(n) with N=4, N=8 and N=16 by MATLAB, and plot the figures;程序如下:function[Xk] = DFT(xn,N)k = [0:1:N-1];n = [0:1:N-1];Wn = exp(-j*2*pi/N);kn = k'*n;Wn_kn = Wn.^kn;Xk = xn*Wn_kn;clearxn1=[1 1 1 1];xn2=[1 1 1 1 0 0 0 0];xn3=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0];N1=length(xn1);N2=length(xn2);N3=length(xn3);XK1=DFT(xn1,N1); magX1=abs(XK1);XK2=DFT(xn2,N2); magX2=abs(XK2);XK3=DFT(xn3,N3); magX3=abs(XK3)subplot(3,1,1);L1=0:1:N1-1;stem(L1,magX1); axis([0 N1 0 5]);subplot(3,1,2);L2=0:1:N2-1;stem(L2,magX2); axis([0 N2 0 5]);subplot(3,1,3);L3=0:1:N3-1;stem(L3,magX3);axis([0 N3 0 5]);最终方针波形如下:2) Determine the FT of sequence x(n)=R4(n) by MATLAB, and plot the figure;程序如下:function Ke=FT(xn,N)n=0:1:N-1;w=0:0.01*pi:2*pi;Wn=exp(-j*n'*w);Ke=xn*Wn;endclear;xn=[1 1 1 1];w=0:0.01*pi:2*pi;N=length(xn);Ke=FT(xn,N);Ke1=abs(Ke);plot(w,Ke1);axis([0 2*pi 0 5]);最终仿真波形如下:3) Compare figures and give the relationship between DFT and FT;程序如下:(调用函数上边已经求得,这里不再重复)clearxn1=[1 1 1 1];xn2=[1 1 1 1 0 0 0 0];xn3=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0];N1=length(xn1);N2=length(xn2);N3=length(xn3);XK1=DFT(xn1,N1);magX1=abs(XK1);XK2=DFT(xn2,N2);magX2=abs(XK2);XK3=DFT(xn3,N3);magX3=abs(XK3);subplot(4,1,1);L1=0:1:N1-1;stem(L1,magX1);axis([0 N1 0 5]);xlabel('N=4');subplot(4,1,2);L2=0:1:N2-1; stem(L2,magX2); axis([0 N2 0 5]); xlabel('N=8');subplot(4,1,3);L3=0:1:N3-1; stem(L3,magX3); axis([0 N3 0 5]); xlabel('N=16');subplot(4,1,4);xn=[1 1 1 1];w=0:0.01*pi:2*pi; N=length(xn);Ke=FT(xn,N);Ke1=abs(Ke); plot(w,Ke1);axis([0 2*pi 0 5]); xlabel('FT');Homework 2:1) Computing the 24-points DFTs of the two sequences that x1(n)= cos(nπ/6) and x2(n)= cos(nπ/4) using a single 24-point DFT by Matlab;2) Plot the figure of x1(n), x2(n), |X1(k)| and |X2(k)|;3) Analysis the value of |X1(k)| and |X2(k)|;4) Applying IDFT to X1(k) and X2(k) to obtain x1N(n) and x2N(n);程序如下:function[Xk] = DFT(xn,N)k = [0:1:N-1];n = [0:1:N-1];Wn = exp(-j*2*pi/N);kn = k'*n;Wn_kn = Wn.^kn;Xk = xn*Wn_kn;function[xn] =IDFT(Xk,N) k = [0:1:N-1];n = [0:1:N-1];Wn = exp(-j*2*pi/N);kn = k'*n;Wn_kn = Wn.^(-kn);xn = (Xk*Wn_kn)/N;clearN=24;n=0:23;xn1=cos(n*pi/6);xn2=cos(n*pi/4);xn=xn1+j*xn2;XK=DFT(xn,N);XKN=conj(XK);for k=2:NXKN(k)=conj(XK(N-k+2)); endXK1=(XK+XKN)/2XK2=(XK-XKN)/(2*j)x1n=IDFT(XK1,N);x2n=IDFT(XK2,N);subplot(2,2,1)stem(n,xn1);subplot(2,2,2)stem(n,xn2);subplot(2,2,3)stem(n,x1n);axis([0 30 -1 1]);subplot(2,2,4)stem(n,x2n);axis([0 30 -1 1]);最终仿真波形如下图:5) Compare x1(n) and x1N(n);Compare x2(n) and x2N(n);这里,x1(n)是程序中的xn1,x2(n)是程序中的xn2;x1N(n)是程序中的x1n,x1N(n)是程序中的x2n,他们的比较如上图所示。
MATLAB数字图像处理几何变换傅里叶变换
Matlab数字图像处理实验指导实验目的:通过实验,深入理解和掌握图像处理的基本技术,提高动手实践能力。
实验环境:Matlab变成实验一图像的几何变换实验内容:设计一个程序,能够实现图像的各种几何变换。
实验要求:读入图像,打开图像,实现图像的平移变换、比例缩放、转置变换、镜像变换、旋转变换等操作。
实验原理:图像几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。
学习几何变换的关键就是要确定这种空间映射关系,以及映射过程中的变化参数。
几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。
一个几何变换需要两部分运算:首先是空间变换所需的运算,如平移、镜像和旋转等,需要用它来表示输出图像与输入图像之间的(像素)映射关系;此外,还需要使用灰度插值算法,因为按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。
设原图像f(x0,y0)经过几何变换产生的目标图像为g(x1,y1),则该空间变换(映射)关系可表示为:x1=s(x0,y0)y1=t(x0,y0)其中,s(x0,y0)和t(x0,y0)为由f(x0,y0)到g(x1,y1)的坐标换变换函数。
一、图像平移图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动。
二、图像镜像镜像变换又分为水平镜像和垂直镜像。
水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行对换;而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中心轴进行对换。
三、图像转置图像转置是将图像像素的x坐标和y坐标呼唤。
图像的大小会随之改变——高度和宽度将呼唤。
四、图像的缩放图像缩放是指将图像大小按照指定的比率放大或者缩小。
图像缩放函数imresize();调用格式如下:B=imresize(A,Scale,method);参数A为要进行缩放的原始图像。
Scale为统一的缩放比例。
如果希望在x和y方向上以不同比例进行缩放,可用如下调用形式。
信号与系统课程设计-傅里叶变换及matlab仿真
实践课名称设计报告题目:居中填写院系:电气信息工程系专业:组长:学号:组员1 :学号:组员2 :学号:组员3 :学号:组员4 :学号:组员5 :学号:组员6 :学号:指导教师:XXXX年XX月XX日实践课名称设计报告一、选题目的和意义:傅里叶分析的研究与应用至今已经历了一百余年。
进入二十世纪后,谐振电路、滤波器、正弦振荡器等一系列具体问题的解决为正弦函数与傅里叶分析的进一步应用开辟了广阔的前景。
从此,人们逐渐认识到,在通信与控制系统的理论研究与实际6.门函数信号时域波形图、频域图非周期信号的傅里叶变换原理及性质信号的傅立叶变换定义为:(1-1)值得注意的是,的傅立叶变换存在的充分条件是在无限区间内绝对可积,即满足式子:。
但此式并非是的必要条件。
当引入奇异函数概念后,使一些不满足绝对可积的也能进行傅立叶变换。
傅立叶逆变换定义是:(1-2)称为的频谱密度函数。
傅立叶变换的性质(1)线性性质:(1-3)(2)频移性质:(1-4)(3)时移性质:(1-5)(4)尺度变换性质:(1-6)(5)对称性质:(1-7)(6)时域微分性质:(1-8)(7)频域微分性质:(1-9)(8)时域积分性质:(1-10)(9)频域卷积定理:则(1-11)(10)时域卷积定理:则(1-12)傅立叶变换及逆变换的MATLAB实现MATLAB 的Symbolic Math Toolbox 提供了能直接求解傅里叶变换及逆变换的函数fourier()及ifourier()。
三、设计的方法及步骤:使用以下MATLAB函数对本次研究内的6个非周期信号函数进行仿真实现。
傅立叶变换(1) F=fourier(f)(2) F=fourier(f,v)(3) F=fourier(f,u,v)说明:(1) F=fourier(f)是符号函数f 的傅立叶变换,缺省返回是关于ω的函数。
如果f=f(ω),则fourier 函数返回关于t 的函数。
(2)F=fourier(f,v)返回函数F 是关于符号对象v 的函数,而不是默认的ω,即(3)F=fourier(f,u,v)对关于u 的函数f 进行变换,返回函数F 是关于v 的函数,即傅立叶逆变换(1) f=ifourier(F)(2) f=ifourier(F,u)(3) f=ifourier(F,v,u)说明:(1) f=ifourier(F)是函数F的傅立叶逆变换。
MATLAB中GUI在图像处理应用中的设计(包括各种算法)
用MATLAB 进行图像处理算法的界面设计目录1.设计目的 (3)2.题目分析 (3)3.总体设计 (3)4.具体设计 (5)5.结果分析 (34)6.心得体会 (34)7.附录代码 (36)1、设计目的:综合运用MATLAB工具箱实现图像处理的GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。
2、题目分析利用matlab的GUI程序设计一个简单实用的图像处理程序。
该程序应具备图像处理的常用功能,以满足用户的使用。
现设计程序有以下基本功能:1)图像的读取和保存。
2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。
4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。
5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。
7)额外功能。
3、总体设计图一软件的总体设计界面布局如上图所示,主要分为2个部分:显示区域与操作区域。
显示区域:显示载入原图,以及通过处理后的图像。
操作区域:通过功能键实现对图像的各种处理。
在截图中可见,左部为一系列功能按键如“还原”、“撤销”、“截图”等等;界面正中部分为图片显示部分,界面中下方为系列功能切换选择组。
设计完成后运行的软件界面如下:图二与图一先比,运行后的界面更为简洁。
利用“编辑”菜单可调出相应的功能键。
例如:4、具体设计现介绍各个功能模块的功能与实现。
4.1菜单栏的设计。
通过Menu Editor创建如下菜单,通过以下菜单来控制显示或隐藏功能按键以“编辑”菜单中“图像变形”中的“图像翻转”为例说明实现用户界面功能键“图像翻转”的显示与隐藏。
实现该功能的程序段如下:function tuxiangfanzhuan_Callback(hObject, eventdata, handles)% hObject handle to tuxiangfanzhuan (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)set(handles.uipanel7,'Visible','on');if strcmp(get(gcbo, 'Checked'),'on')set(handles.uipanel7,'Visible','on');set(gcbo, 'Checked', 'off');set(handles.uipanel7,'Visible','off');elseset(gcbo, 'Checked', 'on');end该段程序通过设置“图像翻转”功能键对应的句柄uipanel7中的“Visible”属性的开关来实现该功能键的显示隐藏。
大学matlab课程设计图像的傅里叶变换及其应用
课程名称: MATLAB及在电子信息课程中的应用实验名称:图像的傅里叶变换及其应用设计四图像的傅里叶变换及其应用一、设计目的通过该设计,掌握傅里叶变换的定义及含义。
二、设计内容及主要的MATLAB 函数1、图像的离散傅里叶变换假设),(n m f 是一个离散空间中的二维函数,则该函数的二维傅里叶变换定义为nj m j e e n m f f 21),()2,1(ωωωω--∞∞-∞∞-∑∑=其中21ωω和是频域变量,单位是弧度/采样单元。
函数),(21ωωf 为函数),(n m f 的频谱。
二维傅里叶反变换的定义为21212121),(),(ωωωωωωππωππωd d e e f n m f n j m j ⎰⎰-=-==因此,函数),(n m f 可以用无数个不同频率的复指数信号的和表示,在频率),(21ωω处复指数信号的幅度和相位为),(21ωωfMATLAB 提供的快速傅里叶变换函数1)fft2:用于计算二维快速傅里叶变换,其语法格式为b=fft2(I),返回图像I 的二维傅里叶变换矩阵,输入图像I 和输出图像B 大小相同;b=fft2(I,m,n),通过对图像I 剪切或补零,按用户指定的点数计算二维傅里叶变换,返回矩阵B 的大小为m ⨯n 。
很多MATLAB 图像显示函数无法显示复数图像,为了观察图像傅里叶变换后的结果,应对变换后的结果求模,方法是对变换结果使用abs 函数。
2)fftn :用于计算n 维快速傅里叶变换,其语法格式为b=fftn(I),计算图像的n 维傅里叶变换,输出图像B 和输入图像I 大小相同; b=fftn(I, size),通过对图像I 剪切或补零,按size 指定的点数计算n 维傅里叶变换,返回矩阵B 的大小为size 。
3) fftshift :用于将变换后的图像频谱中心从矩阵的原点移到矩阵的中心,其语法格式为b=fftshift(I),将变换后的图像频谱中心从矩阵的原点移到矩阵的中心。
MATLAB GUI设计与实现指南
MATLAB GUI设计与实现指南MATLAB是一款功能强大的数学软件,广泛应用于科学研究、工程设计和数据分析等领域。
与其它编程语言相比,MATLAB的图形用户界面(GUI)设计功能让程序的可视化展示更加生动和直观。
本篇文章旨在为读者提供一份MATLAB GUI设计与实现的指南,帮助他们充分利用MATLAB的GUI工具,打造出更加灵活、易用的交互界面。
一、GUI设计的基础知识在进行GUI设计之前,我们首先需要了解一些基础知识。
MATLAB提供了一系列的GUI设计工具箱,其中最常用的是GUIDE工具箱。
GUIDE工具箱可以帮助我们快速地创建GUI界面,并且具有丰富的可视化组件库以及自定义布局功能。
熟悉这些工具是进行GUI设计的基础。
除了GUI工具箱,MATLAB还提供了一些重要的GUI设计原则。
例如,界面的布局应该简洁明了,不要过分拥挤;按钮和菜单的位置应该符合用户的直觉,便于操作;使用控件的颜色和图标来增加界面的美观性等等。
遵循这些原则可以提高用户体验,使得GUI更加易于理解和操作。
二、创建GUI界面创建GUI界面是GUI设计的第一步。
在MATLAB中使用GUIDE工具箱可以非常方便地完成这个任务。
打开MATLAB后,点击“APPS”选项卡,然后选择“GUIDE”工具箱。
接着,选择“Blank GUI”选项创建一个新的GUI界面。
在创建界面之后,我们可以开始选取需要的组件来设计和布局我们的GUI界面。
GUIDE工具箱提供了多种常用的组件,例如按钮、滑块、文本框等。
通过简单的拖拽和调整,我们可以将这些组件放置到界面中,并设置它们的属性和事件。
三、编写GUI代码在完成GUI界面的设计之后,我们需要对每个组件编写相应的代码。
这些代码可以实现不同的功能,例如对用户的输入进行验证、计算数据并输出结果等。
而在MATLAB中,我们可以使用回调函数来实现这些功能。
回调函数是与GUI组件相关联的函数,当用户与组件交互时,回调函数会被自动调用。
傅里叶变换特性matlab仿真3
3-231 题目要求已知序列x(n)={1, 2, 3, 3, 2, 1}。
1)求出x(n)的傅里叶变换X(ejω),画出幅频特性和相频特性曲线(提示:用1024点FFT近似X(ejω));2)计算x(n)的N(N≥6)点离散傅里叶变换X(k),画出幅频特性和相频特性曲线;3)将X(ejω)和X(k)的幅频特性和相频特性曲线分别画在同一幅图中,验证X(k)是X(ejω)的等间隔采样,采样间隔为2π/N;4)计算X(k)的N点IDFT,验证DFT和IDFT的惟一性。
2 题目分析(1)题用1024点DFT近似x(n)的傅里叶变换。
(2)题用32点DFT。
(3)题由图(e)(f)可验证。
(4)题图(g) 验证了IDFT的惟一性。
3程序源码clear all;close all;xn=[1 2 3 3 2 1]; %输入时域序列向量x(n)N=32;M=1024;Xjw=fft(xn,M); %计算xn的1024点DFT,近似表示序列的傅里叶变换Xk32=fft(xn,N); %计算xn的32点DFTxn32=ifft(Xk32,N); %计算Kk32的32点IDFT%以下为绘图部分k=0:M-1;wk=2*k/M; %产生M点DFT对应的采样点频率(关于π归一化值) subplot(3,2,1);plot(wk,abs(Xjw)); %绘制M点DFT的幅频特性图title('(a) FT[x(n)]的幅频特性图');xlabel('ω/π');ylabel('幅度') subplot(3,2,3);plot(wk,angle(Xjw)); %绘制x(n)的相频特性图line([0,2],[0,0]) %画横坐标轴线title('(b)FT[x(n)]的相频特性图');xlabel('ω/π');ylabel('相位');%axis([0,2,-3.5,3.5])k=0:N-1;subplot(3,2,2);stem(k,abs(Xk32),'.'); %绘制64点DFT的幅频特性图title('(c)32点DFT的幅频特性图');xlabel('k');ylabel('幅度');axis([0,32,0,15])subplot(3,2,4);stem(k,angle(Xk32),'.'); %绘制64点DFT的相频特性图line([0,32],[0,0]) %画横坐标轴线title('(d)32点DFT的相频特性图')xlabel('k');ylabel('相位');axis([0,32,-3.5,3.5])figure(2)k=0:M-1;wk=2*k/M; %产生M点DFT对应的采样点频率(关于π归一化值) subplot(3,2,1);plot(wk,abs(Xjw)); %绘制M点DFT的幅频特性图title('(e) FT[x(n)]和32点DFT[x(n)]的幅频特性');xlabel('ω/π');ylabel('幅度')hold onsubplot(3,2,3);plot(wk,angle(Xjw)); %绘制x(n)的相频特性图title('(f)FT[x(n)]和32点DFT[x(n)]的相频特性');xlabel('ω/π');ylabel('相n)]位');hold onk=0:N-1;wk=2*k/N; %产生N点DFT对应的采样点频率(关于π归一化值) subplot(3,2,1);stem(wk,abs(Xk32),'.'); %绘制64点DFT的幅频特性图subplot(3,2,3);stem(wk,angle(Xk32),'.'); %绘制64点DFT的相频特性图line([0,2],[0,0]);n=0:31;subplot(3,2,2);stem(n,xn32,'.');title('(g)32点IDFT[X(k)]波形');xlabel('n');ylabel('x(n)');4 输出如图3-251题目要求已知序列h(n)=R6(n), x(n)=nR8(n)。
利用matlab中powergui对数列进行傅里叶分析
第一步:
建立仿真文件,加入powergui和示波器如下图所示:
第二步:
设置示波器参数,将示波器测出的数据导入matlab工作区,如下图所示:
其中Variable name随你怎么命名。
我这里命名的是s。
第三步:运行仿真文件,并将所要进行的傅里叶数列导入结构数据s(在workspace中可以看到)中。
如下面的是将函数y=abs(sin(100*pi*t))进行傅里叶分解:
1.在command window窗口中输入函数的准备数据,并将准备数据导入示波器的结构数据s 中:
t=0:0.0001:0.2;
y=abs(sin(50*pi*t));
s.time=t’;
s.signals.values=y’;
注意:结构数据中的数据必须为列向量,否则powergui将不能仿真。
2.进入simulink,现在可以正常的仿真了,点击FFT Analysis
打开后的界面为:。
matlab自修课程设计报告(matlab实现傅立叶变换)
matlab实现信号的傅立叶变换一、设计目的1.熟悉和掌握matlab的基本使用方法,能够熟练运用matlab。
ﻩ2.巩固信号与系统中的傅立叶变换内容,加深对这部分内容的理解。
二、设计任务ﻩ1.掌握matlab的基本操作。
2.利用matlab实现典型非周期信号的傅立叶变换,画出信号的时域图和频域图。
3.利用matlab实现傅立叶变换的基本性质。
三、设计原理1.matlab简介MATLAB是MathWorks公司推出的一套高性能的数值计算和可视化软件,经过多年大量的、坚持不懈的改进,现在MATLAB已经更新至7.x版。
MATLAB集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。
在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以人们十分熟悉的数值或图形方式显示出来。
MATLAB可用来解决实际的工程和数学问题,其典型应用有:通用的数值计算,算法设计,各种学科(如自动控制、数字信号处理、统计信号处理)等领域的专门问题求解。
MATLAB语言易学易用,不要求用户有高深的数学和程序语言知识,不需要用户深刻了解算法及编程技巧。
MATLAB既是一种编程环境,又是一种程序设计语言。
这种语言与C、FORTRAN等语言一样,有其内定的规则,但MATLAB的规则更接近数学表示。
使用更为简便,可使用户大大节约设计时间,提高设计质量。
2.matlab2013b基本界面介绍matlab2013b主界面窗口基本分为五个部分:1)主菜单界面在此界面我们只需要用到新建命令文件和对程序进行间断调试的功能2)文件查看窗口,双击可快速打开文件3)写命令窗口及提示窗口在这个窗口可写入参数、写入公式、显示错误、显示帮助等功能,例如对a赋值、写入公式f =a*a、显示帮助:公式fft的使用方法4)历史命令查看窗口在该窗口可查看历史输入命令,双击历史命令可再次输入到命令窗口5)数值查看窗口在该窗口可查看所有参数详细数值3.理论原理:傅里叶变换的基本思想首先由法国学者傅里叶系统提出,所以以其名字来命名以示纪念。
matlabgui设计快速傅里叶变换fft程序
概述1. Matlab是一个强大的数学软件,其图形用户界面(GUI)设计能力使得用户可以方便地通过图形界面来进行各种数学计算和数据处理。
2. 快速傅里叶变换(FFT)是一种高效的算法,用于将时域信号转换为频域信号,广泛应用于信号处理、通信系统、图像处理等领域。
Matlab GUI设计快速傅里叶变换FFT程序的重要性3. Matlab GUI设计能够使得用户通过交互式界面来输入数据、调整参数,直观地观察到FFT的结果,提高了用户的使用体验和操作便捷性。
4. 通过GUI设计FFT程序,可以为用户提供一种更加直观、友好的工具,让用户更方便地进行信号分析和处理。
Matlab GUI设计快速傅里叶变换FFT程序的步骤5. 确定FFT程序的功能和界面设计的需求:确定FFT程序需要实现的功能,包括输入信号、选择窗函数、设置采样点数等。
6. 创建Matlab GUI界面:利用Matlab的GUIDE工具或手动编写代码来创建GUI界面,包括按钮、文本框、滑动条等控件。
7. 编写FFT算法:利用Matlab内置的FFT函数或手动编写FFT算法,实现信号的快速傅里叶变换。
8. 连接界面和算法:编写Matlab代码,将GUI界面和FFT算法进行连接,使得用户输入参数后,能够实时进行FFT计算,并显示结果。
Matlab GUI设计快速傅里叶变换FFT程序的关键技术9. Matlab GUI的布局设计:合理布局界面,使得用户能够清晰地理解各个控件的作用和功能,方便操作。
10. 参数输入和设置:设计输入框、下拉框等控件,使得用户可以输入参数并进行设置,如输入信号、选择窗函数、设置采样点数等。
11. FFT结果的可视化:设计图表控件,能够直观地显示FFT的结果,如时域信号、频谱图、相位图等。
12. 用户交互体验设计:考虑用户的操作习惯和需求,设计按钮、滑动条等交互控件,使得用户能够方便地进行操作和调整参数。
Matlab GUI设计快速傅里叶变换FFT程序的实例分析13. 以实际的信号分析为例,设计一个包括输入信号选择、窗函数选择、采样点数设置、FFT计算和结果展示等功能的GUI界面。
MATLAB的离散傅里叶变换的仿真
M A T L A B的离散傅里叶变换的仿真WTD standardization office【WTD 5AB- WTDK 08- WTD 2C】应用M A T L A B对信号进行频谱分析及滤波设计目的要求学生会用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。
一、设计要求1、用Matlab产生正弦波,矩形波,并显示各自的时域波形图;2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明;3、绘制三种信号的均方根图谱;4、用IFFT回复信号,并显示恢复的正弦信号时域波形图。
二、系统原理用FFT对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行频谱分析的信号是模拟信号和时域离散信号。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现频率分辨率是2π/N。
x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为:X(k)=DFT[x(n)]=knNWNnnx∑-=1)(,k=0,1,...,N-1NjeNWπ2-=逆变换:x(n) =IDFT[X(k)]=knNWkXNnN-∑-=1)(1,k=0,1,...,N-1但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。
本实验就是采用FFT,IFFT对信号进行谱分析。
三、程序设计fs=input('please input the fs:');%设定采样频率N=input('please input the N:');%设定数据长度t=0::1;f=100;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f*t);figure(1);subplot(211);plot(t,x);%作正弦信号的时域波形axis([0,,-1,1]);title('正弦信号时域波形');z=square(50*t);subplot(212)plot(t,z)axis([0,1,-2,2]);title('方波信号时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M;figure(2);subplot(211);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('正弦信号幅频谱图');y1=fft(z,N);%进行fft变换mag=abs(y1);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('方波信号幅频谱图');grid;%求功率谱sq=abs(y);power=sq.^2;figure(3)subplot(211);plot(f,power);title('正弦信号功率谱');grid;sq1=abs(y1);power1=sq1.^2;subplot(212);plot(f,power1);title('方波信号功率谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(4);subplot(211);plot(ti,magx);axis([0,,-1,1]);title('通过IFFT转换的正弦信号波形');zifft=ifft(y1);magz=real(zifft);ti1=[0:length(zifft)-1]/fs;subplot(212);plot(ti1,magz);title('通过IFFT转换的方波信号波形');grid; 四、仿真结果及分析由图可以看出正弦波周期T=,采样点N=1024.程序为:x=sin(2*pi*f*t);figure(1);subplot(211);plot(t,x);%作正弦信号的时域波形axis([0,,-1,1]);title('正弦信号时域波形');z=square(50*t);subplot(212)plot(t,z)axis([0,1,-2,2]);title('方波信号时域波形');grid;2、对正弦波、方波信号进行FFT变换程序:y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; figure(2);subplot(211);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('正弦信号幅频谱图');y1=fft(z,N);%进行fft变换mag=abs(y1);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('方波信号幅频谱图');grid;正弦信号、方波信号功率谱程序:sq=abs(y);power=sq.^2;figure(3)subplot(211);plot(f,power);title('正弦信号功率谱');grid;sq1=abs(y1);power1=sq1.^2;subplot(212);plot(f,power1);title('方波信号功率谱');grid;对两个信号进行恢复程序:xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(4);subplot(211);plot(ti,magx);axis([0,,-1,1]);title('通过IFFT转换的正弦信号波形');zifft=ifft(y1);magz=real(zifft);ti1=[0:length(zifft)-1]/fs;subplot(212);plot(ti1,magz);title('通过IFFT转换的方波信号波形');grid;当采样频率小于2fc或N小于M时恢复信号就会出现失真,频谱会发生馄叠。
傅里叶变换轮廓术的Matlab仿真实现
傅.p t 变 换 轮 廓 术 的 Ma t l a b仿 真 实
吴应 山, 张启灿
( 四川大学 电子信息学 院 , 四川 成都 6 1 0 0 6 4 )
摘 要 在傅 里叶变换轮 廓术测量方 法中,  ̄ l , - t t 系统从一个 角度投影 结构 光场 , 系统 中的成像装 置从 另一 个角度获
了仿真 实验 。这有助 于学 习和理解 F T P测量方法原理及相关知识 。 关键词 傅 里叶 变换轮廓术 ; Ma Ⅱ a b ; 相位展 开 T N 2 9 文献 标识码 A 文章编号 1 0 0 7— 7 8 2 0 ( 2 0 1 7 ) 0 6 —0 0 9— 0 4 中图分 类号
傅里叶变换轮廓术的MATLAB GUI设计与仿真
傅里叶变换轮廓术的MATLAB GUI设计与仿真
孙漫凝;杨丽娟;束益梅;程菊;边心田
【期刊名称】《应用物理》
【年(卷),期】2016(006)001
【摘要】在傅里叶变换轮廓术的基础上,利用MATLAB的用户界面设计了基于傅里叶变换轮廓术的仿真交互界面,给出了三维面形测量的仿真结果。
该平台具有人机界面友好、操作方便、速度快等优点,将三维面形测量和实验很好的结合起来。
利用理论分析和计算机模拟,为三维测量的教学和研究工作开辟了新的途径。
【总页数】6页(P1-6)
【作者】孙漫凝;杨丽娟;束益梅;程菊;边心田
【作者单位】[1]淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安;;[1]淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安;;[1]淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安;;[1]淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安;;[1]淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安
【正文语种】中文
【中图分类】TP39
【相关文献】
1.傅里叶变换轮廓术的Matlab仿真实现 [J], 吴应山;张启灿
2.基于 MATLAB GUI的FIR数字滤波器设计与仿真 [J], 陈然;张霞萍
3.基于Matlab GUI的复杂曲面轮廓度误差评定系统 [J], 卜晓燕;蔡萍;郭俊杰;苑国英
4.基于MATLAB GUI的相位测量轮廓术 [J], 李凯颖;孙漫凝;边心田;;;
5.基于MATLAB GUI的几种数字波束形成算法设计与仿真 [J], 张晓东
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Applied Physics 应用物理, 2016, 6(1), 1-6Published Online January 2016 in Hans. /journal/app/10.12677/app.2016.61001The Design and Simulation of MATLAB GUIBased on Fourier Transform ProfilometryManning Sun*, Lijuan Yang, Yimei Shu, Ju Cheng, Xiantian BianImportant Laboratory of Modern Testing Technology and Intelligent System of Jiangsu, Huaiyin NormalUniversity, Huai’an JiangsuReceived: Jan. 5th, 2016; accepted: Jan. 22nd, 2016; published: Jan. 28th, 2016Copyright © 2016 by authors and Hans Publishers Inc.This work is licensed under the Creative Commons Attribution International License (CC BY)./licenses/by/4.0/AbstractOn the basis of Fourier transform profilometry, we design interactive simulation interface of Fourier transform profilometry (FTP) with MATLAB GUI, then we can get the simulation results of three-dimensional shape measurement. The platform has the advantages of friendly man-machine interface, convenient operation, fast speed and so on; at the same time it can combine the three- dimensional shape measurement with experiment. By using theoretical analysis and computer simulation, a new approach has been opened up for the teaching and research of three-dimen- sional measurement.KeywordsThree-Dimensional Measurement, GUI Interface, Fourier Transform Profilometry傅里叶变换轮廓术的MATLAB GUI设计与仿真孙漫凝*,杨丽娟,束益梅,程菊,边心田淮阴师范学院,江苏省现代检测技术与智能系统重点建设实验室,江苏淮安*通讯作者。
孙漫凝 等收稿日期:2016年1月5日;录用日期:2016年1月22日;发布日期:2016年1月28日摘 要在傅里叶变换轮廓术的基础上,利用MATLAB 的用户界面设计了基于傅里叶变换轮廓术的仿真交互界面,给出了三维面形测量的仿真结果。
该平台具有人机界面友好、操作方便、速度快等优点,将三维面形测量和实验很好的结合起来。
利用理论分析和计算机模拟,为三维测量的教学和研究工作开辟了新的途径。
关键词三维测量,GUI 界面,傅里叶变换轮廓术1. 引言光学三维传感具有非接触性、测量精度高等优点,在逆向工程、工业检测、机器视觉、文物保护、生物医学等领域具有广泛的应用[1]-[5]。
其中,基于条纹投影的傅里叶变换轮廓术[6] (FTP)具有单帧获取、高分辨率、实时性好等优点,自1983年FTP 提出[7]以来,受到人们广泛的关注。
MATLAB 因其强大的数值计算、数据分析和可视化仿真能力,在高校和科研机构得到广泛的应用。
MATLAB 为用户提供了功能强大的可视化图形界面开发环境(GUI),通过GUI ,用户可以快捷方便地创建GUI应用程序,可以根据用户设计的GUI 布局,自动生成M 文件的框架,用户使用这一框架编写自己的应用程序。
GUI 用户界面友好、使用简单,运用广泛,能够快速、方便地进行某种技术或方法的演示,将GUI 运用到三维测量中也为实验演示与教学提供了新的途径[7] [8]。
2. 基本原理2.1. 光栅模型我们所使用的傅里叶变换方式的测量系统的光路图如下图1所示,A 为投影仪的出射光瞳,摄像系统光轴C0垂直于参考面并且与投影系统光轴AO 相交于O 点,投影光栅的栅线垂直于AOC 的平面,不失一般性,设AC d =,CO l =,AO 与其参考面上发现的夹角为α。
Figure 1. The light path diagram of FTP measurement system图1. FTP 测量系统光路图孙漫凝 等不失一般性,我们可以设OF x =,O E x ′′′=,由几何知识知[9]:22d l x x lf dx +′=′+ (1) 式中f 为投影仪的焦距。
投影到参考面上的条纹是等周期分布的,使其周期为0P ,其参考面上的相位分布()x φ是坐标x 的线性函数,投影仪上E'点与参考面上的F 点的相位相对应,因此由(1)式可得,投影光栅的相位分布函数[9]为:()2202πd l x x P lf dx ϕ+′=′+ (2) 2.2. 测量原理测量系统的光路[5]如图1所示,AO 是投影光轴,CO 是摄像系统的光轴,且CO 垂直于参考平面并与投影光轴AO 相交于O 点,OF 所在的平面为参考平面。
l 是C 点到参考平面的距离,d 是A 点与C 点之间的距离。
D 点和F 点是参考平面上的两点,G 点是物体上的一点。
我们采用正弦光栅投影到物体的表面上,经过物体表面的漫反射,CCD 接收到参考光栅像(),g x y 和变形光栅像()0,g x y ,然后对采集到的图像进行傅里叶变换、滤波、傅里叶逆变换等操作最终恢复出参考光栅(),g x y ′和变形光栅()0,g x y ′∗的光场分布分布。
被测物体的相位分布可表示[6]为: ()()(){}0,Im ln ,*,x y g x y g x y φ′′∆= (3) 式中,Im 表示取其复数的虚部,∗表示共轭运算。
从图1中,我们可以将三维表面上被测量的点G 的高度记为h ,由相似三角形ACG ∆和FDG ∆可以计算出物体表面的高度分布[5]为:()()()00,,,2πL x y h x y x y f d φφ∆=∆− (4)由此我们可以得到物体的三维图像的恢复,同时,我们也可以从上式当中看出,物体恢复重建的精度取决于相位(),x y φ∆的测量精度、光栅像的基频0f 以及投影系统光轴与摄影系统光轴的距离d 。
3. FTP 的GUI 设计与仿真3.1. 框架设计打开MATLAB 找到GUI 设计的界面,然后在布局编辑器中设置以下控件:建立4个坐标轴对象用来显示所要投影条纹的图像、变形之后投影条纹的图像、恢复物体的三维图像以及误差分析的图像;建立4个静态文本标签,标注相应的控件提示;建立4个可编辑文本框,分别显示频率、系统参数d 和L 、以及噪声;建立4个滑动条用以控制频率、系统参数d 和L 、以及噪声;建立6个按钮,分别绘制所需的所有图像,以及整个操作过程的开始与结束。
设置以上所有控件的String 和Tag 属性,便于程序的编辑,如图2所示。
在MATLAB 里对于每一幅所要展示的图相对应的程序代码进行编写,定义相应的函数形式也可直接调用MATLAB 里自身的函数设置。
1) 在初始程序中,我们可以设置条纹频率f 的值为0.08,系统参数成像系统到参考面的距离L 为1800 cm ,系统参数投影系统与成像系统之间的距离d 为900 cm ,在条纹图强度上加入随机噪声为0.01。
孙漫凝 等Figure 2. Simulation interface图2. 仿真界面相应的程序如下:()set handles.edit1,String ',0.08; %设置条纹频率的大小()set handles.edit2,String ',1800; %设置系统参数L 的大小()set handles.edit3,String ',750; %设置系统参数d 的大小()set handles.edit1,String ',0.03; %设置噪声的大小2) 就这4个滑动条而言,我们首先需要设置的就是滑动条的最大值和最小值,其次,我们要将滑动条显示的数据体现在动态文本框中。
相应的程序如下:()slider1 value get handles.slider1,Value';= %获得条纹频率的滑动条数值()()set handles.edit1,String',num2str slider1 value ; %将滑动条的数值显示在动态文本框3) 调用pushbutton1_Callback 函数,根据设置的具体参数绘制相应的初始条纹图、变形条纹图、恢复物体图以及误差分析图。
程序调试完成后运行的界面如图3所示。
3.2. 仿真平台的使用在程序编写完成以后,我们首先根据经验将初始值先设定好,如图4中所示,条纹频率f 设置为0.05,系统参数成像系统到参考面的距离L 为1800 cm ,系统参数投影系统与成像系统之间的距离d 为900 cm ,在条纹图强度上加入随机噪声为0.03,分别点击事先设定好的相应按钮,便会出现如下图所示的情况。
我们能够清楚的看到,在将初始的条纹图进行一定程度上的变形后,可以明显的看到条纹的变形处有一个类似圆形的形状,而将其恢复时(见下图中的恢复物体图),与原图相比较而言出现了一定的差距,通过变化,将其与原图像的差距进行弥补,而就是由于其与原图有一定的差距,从而使我们能够得到第四幅图——误差分析。
孙漫凝等Figure 3. The show figure of program debugging图3. 程序调试展示图Figure 4. The interface diagram of simulation operation图4.仿真运行界面图模拟运行的过程当中,我们通过滑动条来不断的改变条纹频率f、系统参数L和d、以及噪声这4个参数,与此同时条纹图和恢复物体的图像都会随之发生相应的变化,从而由此产生不同的误差分析的结果[9]。