clc;clear;tic
syms k alpha
[x,y] = meshgrid(linspace(0,4,41),linspace(0,4,41));
t=0.5;c=2;
zeta = zeros(numel(x),1);
for i = 1:numel(x)
for n=0:1:0
wn = sqrt(k.*(2.*n+1));
u = exp(-(alpha-t).^2);
s = sqrt(pi)./(2.*c).*exp((-k.^2)./(4.*c.^2));
fun1=@(k,alpha)2./pi .*exp(-k.*x(i)).*laguerreL(n,2.*k.*x(i)).*wn.*s.*cos(k.*y(i)).* ...
2.*k./wn .* exp(-k.*alpha).*laguerreL(n,2.*k.*alpha).*u;
int=integral2(fun1,0,inf,0,inf);%后面改成matlabFunction可以运行,但是我想知道为什么这样不可以正常执行命令呢
zeta(i) = zeta(i)+ int;
end
disp(i);
end
figure
Zeta=reshape(zeta,size(x));
surf(x,y,Zeta),view(0,90)
shading interp;
cx = colorbar;
title('(a) t=0.5')
xlabel('x=x''/\sigma')
ylabel('y=y''/\sigma')
set(gca,'XLim',[0,4]);
set(gca,'XTick',0:1:4);
set(gca,'XTickLabel',0:1:4);
set(gca,'YLim',[0,4]);
set(gca,'YTick',0:1:4);
set(gca,'YTickLabel',0:1:4)
toc
为什么这个改成matlabFunction之后可能正常运行但是用这个不可以??
下面是我用把上面的函数柄改成matlabFunction代码
clc;clear;tic
syms k alpha
[x,y] = meshgrid(linspace(0,4,41),linspace(0,4,41));
t=0.5;
c=2;
zeta = zeros(numel(x),1);
for i = 1:numel(x)
for n=0:1:0
wn = sqrt(k*(2*n+1));
u = exp(-(alpha-t)^2);
s = sqrt(pi)/(2*c)*exp((-k^2)/(4*c^2));
Fun=2/pi *exp(-k*x(i)).*laguerreL(n,2*k*x(i))*wn*s*cos(k*y(i))* ...
2*k/wn * exp(-k*alpha)*laguerreL(n,2*k*alpha)*u;
int=integral2(matlabFunction(Fun),0,inf,0,inf);%只在此处与上面有不同
zeta(i) = zeta(i)+ int;
end
disp(i);
end
figure
Zeta=reshape(zeta,size(x));
surf(x,y,Zeta),view(0,90)
shading interp;
cx = colorbar;
title('(a) t=0.5')
xlabel('x=x''/\sigma')
ylabel('y=y''/\sigma')
set(gca,'XLim',[0,4]);
set(gca,'XTick',0:1:4);
set(gca,'XTickLabel',0:1:4);
set(gca,'YLim',[0,4]);
set(gca,'YTick',0:1:4);
set(gca,'YTickLabel',0:1:4)
toc
不知道你这个问题是否已经解决, 如果还没有解决的话:函数文件的第一行一般都是以Function开始,是函数文件的标志,函数文件都哦是为了实现某种特定的功能,函数在实际应用中占有重要地位
函数文件与命令文件主要区别:函数文件一般要带有参数,要有返回值,而且函数文件一定要有函数名;命令文件一般不需要带有参数,而且其中的变量执行完之后仍然会保留在内存之中,直到被clear命令清除;而函数文件中的变量仅仅在函数运行期间有效,一旦函数运行结束,其定义的一切变量都会被系统自动清除
举例:分段函数