首页 > 行业资讯 > 【光学】matlab实现光学解包裹及校正

【光学】matlab实现光学解包裹及校正

时间:2022-05-27 来源: 浏览:

【光学】matlab实现光学解包裹及校正

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集

1 简介

2 部分代码

function varargout = Multi_GUI(varargin) % 可使用guide查看各控件的句柄和回调函数位置; % GUIDE v2. 5 ; % 初始化代码,请勿编辑 gui_Singleton = 1 ; gui_State = struct( ’gui_Name’ , mfilename, ... ’gui_Singleton’ , gui_Singleton, ... ’gui_OpeningFcn’ , @Multi_GUI_OpeningFcn, ... ’gui_OutputFcn’ , @Multi_GUI_OutputFcn, ... ’gui_LayoutFcn’ , [] , ... ’gui_Callback’ , []); if nargin && ischar(varargin{ 1 }) %%判断输入变量个数及是否为字符组 gui_State.gui_Callback = str2func(varargin{ 1 });%%函数句柄 end if nargout %%函数输出参数数目 [varargout{ 1 :nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function Multi_GUI_OpeningFcn(hObject,~,handles,varargin) set(groot, ’defaultimageUserData’ , 0 ); set(groot, ’defaultlineUserData’ , 0 ); handles.output = hObject; guidata(hObject, handles); function varargout = Multi_GUI_OutputFcn(~,~,handles) varargout{ 1 } = handles.output; %曲线放大函数 function p_ButtonDownFcn(hObject,~) if strcmp(get(gcf, ’SelectionType’ ), ’open’ )&&hObject.Children.UserData== 0 %%strcmp比较两个字符串,同 10 ; gcf返回当前figure;判断是否是双击 ; hObject.Children.UserData= 1 ; S=get( 0 , ’screensize’ ); F_z=figure( ’InnerPosition’ ,[S( 3 )/ 20 ,S( 4 )/ 15 ,S( 3 )* 0.9 ,S( 4 )* 0.9 ], ’Toolbar’ , ’none’ , ’Menubar’ , ’none’ , ’NumberTitle’ , ’Off’ , ’Name’ , ’放大视图’ ); p_f=hObject.Position; P_f=hObject.Parent; hObject.Parent=F_z; set(gca, ’Position’ ,[ 0.05 , 0.05 , 0.9 , 0.9 ]); F_z.DeleteFcn={@pZoom_DeleteFcn,hObject,P_f,p_f}; end %放大窗口删除函数(曲线) function pZoom_DeleteFcn(~,~,a,P_f,p_f) a.Parent=P_f; set(a, ’Position’ ,p_f); a.Children.UserData= 0 ; %云图绘制函数 function nephogram(ax, data ,CLim,target,unit,biaozhi)%(云图坐标区,云图数据,颜色范围矩阵,标题,曲线坐标区) image(ax, data , ’CDataMapping’ , ’scaled’ , ’ButtonDownFcn’ ,{@a_Callback,target,unit,biaozhi});%显示AoP云图 直接和缩放颜色数据映射 scaled为默认 set(ax, ’DataAspectRatioMode’ , ’manual’ , ’DataAspectRatio’ ,[ 1 1 1 ]); %设置各个坐标轴数据值的相对比例 colormap(ax,jet);%色图矩阵默认 colorbar(ax);%差值填色图标尺 axis(ax, ’off’ );%坐标轴无上下限 caxis(ax,CLim);%设置颜色条数值上下限 %单击图片后显示沿截线的分布的回调函数 function a_Callback(hObject,~,ax,Unit,biaozhi)%ax为曲线所在坐标区,Unit为纵轴单位 hObject.HandleVisibility= ’off’ ; %控件的句柄可访问性为不可访问 cla(hObject.Parent);%清除已有提示线 hObject.HandleVisibility= ’on’ ; %可以访问控件的句柄 if strcmp(get(gcf, ’SelectionType’ ), ’open’ )&&hObject.UserData== 0 %若为双击且尚未打开放大窗口,则放大该图片 hObject.UserData= 1 ; S=get( 0 , ’screensize’ ); %屏幕尺寸 C0=hObject.CData; %所画图像中用到的数据 if any(~biaozhi(:)) %any判断向量中是否存在非零元素,biaozhi中是否有 0 X=find(sum( 1 -biaozhi)~= 0 ); %列求和,生成行向量 Y=find(sum( 1 -biaozhi, 2 )~= 0 ); %行求和,生成列向量 hObject.Parent.XLim=[ 0.5 length(X)+ 0.5 ]; % hObject.Parent.YLim=[ 0.5 length(Y)+ 0.5 ]; % hObject.CData=C0(Y( 1 ):Y( end ),X( 1 ):X( end )); % end [h,w]=size(hObject.CData); %h行数w列数 cm=colormap(hObject.Parent); F_z=figure( ’Visible’ , ’off’ , ’InnerPosition’ ,[S( 3 )/ 20 ,S( 4 )/ 15 ,S( 3 )* 0.9 ,S( 4 )* 0.9 ], ’Colormap’ ,cm, ’Toolbar’ , ’none’ , ’Menubar’ , ’none’ , ’NumberTitle’ , ’Off’ , ’Name’ , ’放大视图’ ); ca=copyobj(hObject.Parent,F_z); %复制图形对象及其后代,复制hObject标识的一个或多个图形对象并返回新对象句柄或新对象数组。新图形对象是F_z指定的图形对象的子级 set(gca, ’Position’ ,[ 0.025 , 0.025 , 0.95 , 0.95 ]); ca.Children.ButtonDownFcn={@a_Callback,ax,Unit,biaozhi}; ca.Children.UserData= 1 ; c=colorbar(ca); ca.YAxis.Label.Units= ’pixels’ ; F_z.InnerPosition( 3 )=c.Position( 3 )*F_z.InnerPosition( 3 )+w/h*F_z.InnerPosition( 4 )+ca.TickLength( 2 )*F_z.InnerPosition( 4 )-ca.YAxis.Label.Extent( 1 ); ca.YAxis.Label.Units= ’data’ ; F_z.Visible= ’on’ ; F_z.DeleteFcn={@Copy_DeleteFcn,hObject,C0}; else if ~isempty(ax.Children) %判断是否为非空 mark=ax.Children.UserData; else mark= 0 ; function popupmenu2_Callback(hObject,~,handles) % #ok<DEFNU> switch get(hObject, ’Value’ ) case 1 if isfield(handles, ’p1’ ) nephogram(handles.axes3,handles.p1,[min(handles.p1(handles.p1~= 0 )),max(handles.p1(handles.p1~= 0 ))],handles.axes4,[],handles.biaozhi)%(云图坐标区,云图数据,颜色范围矩阵,标题,曲线坐标区) end case 2 if isfield(handles, ’p2’ ) nephogram(handles.axes3,handles.p2,[min(handles.p2(handles.p2~= 0 )),max(handles.p2(handles.p2~= 0 ))],handles.axes4,[],handles.biaozhi)%(云图坐标区,云图数据,颜色范围矩阵,标题,曲线坐标区) end end function pushbutton_save_Callback(~,~,handles) % #ok<DEFNU> path=uigetdir([getenv( ’userprofile’ ), ’desktop’ ], ’选择φ1和φ2数据的保存路径’ ); if path~= 0 dlmwrite([path, ’phi1.txt’ ],handles.p1); dlmwrite([path, ’phi2.txt’ ],handles.p2); end

3 仿真结果

4 参考文献

[1]王永红, 陈维杰, 钟诗民,等. 相位解包裹技术及应用研究进展[J]. 测控技术, 2018, 037(012):1-7,16.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐