netant0721
2010-08-20, 23:11
小弟刚开始学习Matlab,请教哪位大侠能看下下面小段代码的问题:
clc;clear;
M = 5;
N = 5;
Mun_points = 6*M*N+2*N;
Ht_z = zeros(Mun_points,1);
Ht_theta = zeros(Mun_points,1);
Htx_val = 1000;
Hty_val = 1000;
L=.3;
a=.15;
c=.08;
d=0;
omiga = 2*pi*64e6;
miu0 = 4*pi*1.0e-7;
epos0 = 1.0e-9/(36*pi);
alf = omiga*sqrt(miu0*epos0);
for j = 1:2*N
for k = 1:3*M+1
Ht_z(j+(k-1)*2*N) = 2*c*j/(2*N)+d;
Ht_theta(j+(k-1)*2*N) = 2*pi*k/(3*M+1);
end
end
m=1;
n=1;
syms z0 belta;
for k = 1:Mun_points
temp_offset = a*cos(belta)-sqrt(c^2-(Ht_z(k)-d)^2);
Rc = sqrt(a^2+c^2-(Ht_z(k)-d)^2-2*a*sqrt(c^2-(Ht_z(k)-d)^2)*cos(belta)+(z0-Ht_z(k))^2);
temp_coef = a/(2*pi);
temp_exp = exp(-i*alf*Rc)*(i*alf/(Rc^2)+1/(Rc^3)) ;
digits(3);
%fSx1mn = vpa(a/(2*pi)*(a*cos(belta)-sqrt(c^2-(Ht_z(k)-d)^2))*cos(m*belta)*sin(n*pi*(z0+L/(2*L))))
f=@(z0,belta)temp_coef*temp_offset*cos(m*belta)*sin(n*pi*(z0+L/(2*L)))*temp_exp
Sx1mn(k) = dblquad(f,-L,L,0,2*pi);
end
%*************************************************%
运行后:
??? Error using ==> dblquad>innerintegral at 81
Inputs must be floats, namely single or double.
Error in ==> quad at 77
y = f(x, varargin{:});
Error in ==> dblquad at 60
Q = quadf(@innerintegral, ymin, ymax, tol, trace, intfcn, ...
Error in ==> Untitled2 at 45
Sx1mn(k) = dblquad(f,-L,L,0,2*pi);
clc;clear;
M = 5;
N = 5;
Mun_points = 6*M*N+2*N;
Ht_z = zeros(Mun_points,1);
Ht_theta = zeros(Mun_points,1);
Htx_val = 1000;
Hty_val = 1000;
L=.3;
a=.15;
c=.08;
d=0;
omiga = 2*pi*64e6;
miu0 = 4*pi*1.0e-7;
epos0 = 1.0e-9/(36*pi);
alf = omiga*sqrt(miu0*epos0);
for j = 1:2*N
for k = 1:3*M+1
Ht_z(j+(k-1)*2*N) = 2*c*j/(2*N)+d;
Ht_theta(j+(k-1)*2*N) = 2*pi*k/(3*M+1);
end
end
m=1;
n=1;
syms z0 belta;
for k = 1:Mun_points
temp_offset = a*cos(belta)-sqrt(c^2-(Ht_z(k)-d)^2);
Rc = sqrt(a^2+c^2-(Ht_z(k)-d)^2-2*a*sqrt(c^2-(Ht_z(k)-d)^2)*cos(belta)+(z0-Ht_z(k))^2);
temp_coef = a/(2*pi);
temp_exp = exp(-i*alf*Rc)*(i*alf/(Rc^2)+1/(Rc^3)) ;
digits(3);
%fSx1mn = vpa(a/(2*pi)*(a*cos(belta)-sqrt(c^2-(Ht_z(k)-d)^2))*cos(m*belta)*sin(n*pi*(z0+L/(2*L))))
f=@(z0,belta)temp_coef*temp_offset*cos(m*belta)*sin(n*pi*(z0+L/(2*L)))*temp_exp
Sx1mn(k) = dblquad(f,-L,L,0,2*pi);
end
%*************************************************%
运行后:
??? Error using ==> dblquad>innerintegral at 81
Inputs must be floats, namely single or double.
Error in ==> quad at 77
y = f(x, varargin{:});
Error in ==> dblquad at 60
Q = quadf(@innerintegral, ymin, ymax, tol, trace, intfcn, ...
Error in ==> Untitled2 at 45
Sx1mn(k) = dblquad(f,-L,L,0,2*pi);