%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 该函数用于得到sinc函数偏移特定位置时的函数值,用于仿真 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%数据生成及图像显示部分
clc;close all;clear;
N1 = 100;
N2 = 100;
alpha = 1;
% delta1 = 0;
% delta2 = 0;
delta1 = 0.0002;
delta2 = 0.0001;
t=-3:0.01:3;
[n1,n2] =meshgrid(t);

x1 = -3:0.01:3;
x2 = -3:0.01:3;
syms k1 k2; 
r = alpha / (N1*N2) * sin(pi*(k1 + delta1)) .* sin(pi*(k2 + delta2)) ./ ( sin(pi / N1 *(k1 + delta1)) .* sin(pi / N2 *(k2 + delta2)) );

old = {k1, k2};
new = {n1 ,n2};
f = subs(r,old, new);
mesh(n1,n2,f);


%获取间隔数据
disp(sprintf('偏移量delta1 = %f,   delta2 = %f 时,偏移数据为:',delta1,delta2))
s = -3:1:3;
[x1,x2] = meshgrid(s);
old = {k1, k2};
new = {x1 ,x2};
ytmp = subs(r,old, new)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%数据仿真验证部分


N1 = 100;
N2 = 100;

n2 = [-3:3, -3:3, -3:3, -3:3, -3:3, -3:3, -3:3];
n1 = [-3,-3,-3,-3,-3,-3,-3, -2,-2,-2,-2,-2,-2,-2, -1,-1,-1,-1,-1,-1,-1, 0,0,0,0,0,0,0, 1,1,1,1,1,1,1, 2,2,2,2,2,2,2, 3,3,3,3,3,3,3];

y = reshape(ytmp,1,49);
n = [n1;n2];
f = inline(' a(1) /(100*100) * sin(pi*(n(1,:) + a(2))) .* sin(pi*(n(2,:) + a(3))) ./ ( sin(pi / 100 *(n(1,:) + a(2))) .* sin(pi / 100 *(n(2,:) + a(3))) + eps )' ,'a','n');
[xx,res]=lsqcurvefit(f,[0.1,0.1,0.1],n,y); %最小二乘拟合求解参数
disp(sprintf('数据仿真-验证结果'))
alpha_delta1_delta2 = xx
err = res

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐