matlab程序求助

万花筒哈哈 2020-03-27 05:05:54
1. function varargout=unwrap_ one_ d(w_ ph,s _ph, th) 2.%本函数完成一行(或列)包裹相位的解包裹运算 3.%格式un_ ph=unwrap _one_ d(w_ ph,s_ ph,th); 4.%输入的三个变量:w_ ph为包裹相位,s_ ph为起始相位值,而th为域值 5.%若相位值包裹在(-π,π],域值th取π;若相位值包裹在(-π/2,π/2],th取π/2 6.%输出变量un_ph为解包裹相位值 7. numb=length(w_ ph); %计算包裹相位的大小(元素个数) 8. un_ ph=w_ ph; %将包裹相位值赋值给un_ ph——预设解包裹相位 9. un_ ph(1)=s_ ph; %将起点相位赋值给un_ ph 的第一个元素 (不再参加解包裹) 10. for n=2:numb %从第二个元素开始解包裹运算 11.delta=w_ ph(n)-w_ ph(n-1); %相邻两个包裹相位作比较(相减) 12.if (abs (delta)<=th) %差值不大于域值 13.un_ ph(n)=un_ ph(n-1) +delta; %解包裹相位等于前一个解包裹相位值加差值 14.elseif (delta<0) %差值大于域值,且差值为负 15.un_ ph(n)=un_ ph(n-1)+ delta+ 2* th; %前一个包解裹相位值加差值再加2倍域值 16.else %差值大于域值,且差值为正 17.un_ ph(n)=un_ ph(n-1) +delta-2*th; %前一个解包裹相位值加差值再减2倍域值 18. end 19.end 20.varargout{1}=un_ph; %将解包裹相位值赋值给输出变量 -------------------------------------------------上面都是函数,下面是用的程序 ph=peaks(256)*3; %预设原始相位 mu=0.5; %噪声系数 noise=rands(256,256).*mu.*pi; %噪声 ph=ph+noise; %叠加有噪声的预设原始相位 U=exp(j*ph); ph0=angle(U); %对应的包裹相位 [r,c]=size(ph0); figure,imshow(ph0,[]) unph=ph0; %预设解包裹后的相位 unph(1,:)=unwrap_one_d(ph0(1,:),ph0(1,1),pi);%先完成第一行元素的解包裹运算 for n=1:c %下面完成第n列元素的解包裹运算,起始相位值为该列第一行上元素的解包裹相位值 unph(:,n)=unwrap_one_d(ph0(:,n),unph(1,n),pi); end figure,imshow(unph,[]) 有没有懂的运行下看看错误在哪
...全文
212 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒲公英— 2020-03-31
  • 打赏
  • 举报
回复
18、19行是不是少一个end,U=exp(j*ph); ph0=angle(U); 中j变量并没有啊。

6,128

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧