声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 893|回复: 1

[编程技巧] 程序运行过后的误差精度达不到,怎么修改这个程序。

[复制链接]
发表于 2012-4-23 13:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 cppwylb 于 2012-4-23 17:17 编辑

下面是相位轮廓术的程序,模拟半球,可是最后的误差分析达不到要求的精度,请高人指导一下,单位告诉的相位差改为0.2pi要怎么弄
close all;clear all;clc
N=512;x=1:N;
y=1:N;[x,y]=meshgrid(x,y);R=240;r=90;
z=zeros(N);
for i=1:N
   for j=1:N
      if(sqrt((i-N/2)^2+(j-N/2)^2)<sqrt(R*R-r*r))
        z(i,j)=.25*((sqrt(R*R-(i-N/2).*(i-N/2)-(j-N/2).*(j-N/2))-r));  
    end
end
end
z=0.02*z;
%figure,mesh(z);
% [x,y]=meshgrid(0:0.01:4,0:0.01:4);
% Z = PEAKS(401);
% Z = Z/max(max(Z));
% z = 1.5*Z;
%h = max(max(Z))%
figure,mesh(z);xlabel('x'),ylabel('y'),zlabel('z')  
f0=0.01;
noise=0;
i01=0.2+0.5*cos(2*pi*x*f0)+noise.*rand(size(z));
i02=0.5+0.5*cos(2*pi/4+2*pi*x*f0)+noise.*rand(size(z));
i03=0.5+0.5*cos(4*pi/4+2*pi*x*f0)+noise.*rand(size(z));
i04=0.5+0.5*cos(6*pi/4+2*pi*x*f0)+noise.*rand(size(z));
figure,gray256(i01);
figure,gray256(i02);
figure,gray256(i03);
figure,gray256(i04);

q2=-atan2((i01*sin(0*pi/4)+i02*sin(2*pi/4)+i03*sin(4*pi/4)+i04*sin(6*pi/4)),(i01*cos(0*pi/4)+i02*cos(2*pi/4)+i03*cos(4*pi/4)+i04*cos(6*pi/4)));
figure,mesh(q2);xlabel('x'),ylabel('y'),zlabel('z')
temp=ones(size(q2));
q21=LingXingUnwrap2(q2,temp,200,200);
figure,mesh(q21);
   
i1=0.5+0.5*cos(2*pi*x*f0+2*pi*z)+noise.*rand(size(z));  
figure,gray256(i1)
i2=0.5+0.5*cos(2*pi/4+2*pi*x*f0+2*pi*z)+noise.*rand(size(z));
figure,gray256(i2)
i3=0.5+0.5*cos(pi+2*pi*x*f0+2*pi*z)+noise.*rand(size(z));
figure,gray256(i3)
i4=0.5+0.5*cos(6*pi/4+2*pi*x*f0+2*pi*z)+noise.*rand(size(z));
figure,gray256(i4)

q1=-atan2((i1*sin(0*pi/4)+i2*sin(2*pi/4)+i3*sin(pi)+i4*sin(6*pi/4)),(i1*cos(0*pi/4)+i2*cos(2*pi/4)+i3*cos(pi)+i4*cos(6*pi/4)));
figure,mesh(q1);xlabel('x'),ylabel('y'),zlabel('z')  

q11=LingXingUnwrap2(q1,temp,200,200);
figure,mesh(q11);

b=(q11-q21)./(2*pi);
wu=(q11-q21)./(2*pi)-z;
err2=max(max(wu))
figure,mesh(q21);xlabel('x'),ylabel('y'),zlabel('z')
figure,mesh(q11);xlabel('x'),ylabel('y'),zlabel('z')
figure,mesh(b);xlabel('x'),ylabel('y'),zlabel('z')%%%恢复的物体
figure,mesh(wu);xlabel('x'),ylabel('y'),zlabel('z')%%%测量误差

回复
分享到:

使用道具 举报

 楼主| 发表于 2012-4-23 15:58 | 显示全部楼层
补充,把单位高度引起的相位差改成0.2pi要怎么改啊,
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-30 05:23 , Processed in 0.068523 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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