matlab几百个子程序代码合并为一个文档

matlab几百个子程序代码合并为一个文档,第1张

matlab几百个子程序代码洞哪合并为一个文档,必须都是function,

如早颤坦果你的主程序是普通的m程序,不是function,而子程序是function,这两个程序是不能写在一起的

举个例子:

%主程序

a=1

b=2

c=addfun(a,b)

% 子程序

function c=addfun(a,b)

c=a+b;

return

以上是不能写在一个m文件里的。

但是

function mainfun()

clc

a=1

b=2

c=addfun(a,b)

% 子程序

function c=addfun(a,b)

c=a+b

return

这样子时可以的,可以直接运行。不过当程序运行结束后,陆桐你将无法查看主程序和子程序的变量的值

Matlab两个颤慧一维数组合并为一个茄拦答数衡拿组,可以这样 *** 作:

>a=[1,2,3,4]'%将行向量转置成列向量

>b=[4,3,2,1]'%将行向量转置成列向量

>c=[a,b]

function test

global u0

tspan= (0:0.01:25).'

u0_list = logspace(-1,2,30).'

bw = zeros(size(u0_list))

bw1 = bw

options = odeset('RelTol',1e-13,'AbsTol',1e-13)

pause_en = 0

for i_u0 = 1:length(u0_list)

u0 = u0_list(i_u0)

xinit= [u0,0]

xinit1 = [0,sqrt(u0^2+1)-1]

find_3dB = 0

[t,x]= ode45(@odefun,tspan,xinit,options)

[t1,x1] = ode45(@odefun1,tspan,xinit1,options)

u_div_u0 = (x(:,1)/u0).^2

u_div_u01= (x1(:,1)/u0).^2

fprintf('u0=%6.3f\n',u0)

plot(t,u_div_u0,t1,u_div_u01)

if pause_en

pause

else

pause(0.5)

end

for i_t=1:length(t)-1

if u_div_u0(i_t)==0.5 ||...

(u_div_u0(i_t)-0.5)*(u_div_u0(i_t+1)-0.5)<0

find_3dB = 1

break

end

end

if find_3dB

bw(i_u0) = 2*t(i_t)

else

fprintf('error!\n')

end

for i_t1=1:length(t1)-1

if u_div_u01(i_t1)==0.5 ||...

(u_div_u01(i_t1)-0.5)*(u_div_u01(i_t1+1)-0.5)<0

find_3dB = 1

break

end

end

if find_3dB

bw1(i_u0) = 2*t1(i_t1)

else

fprintf('error!\n')

end

end

loglog(u0_list,bw,'-*b',u0_list,bw1,'-*r')

axis([0.09,110,1,50])

set(gca,'xtick',[0.1,0.5,1,5,10,50,100])

set(gca,'ytick',[1,2,5,10,20,50])

end

function y=odefun(t,x)

global u0

y= zeros(size(x))

delta= 2*(sqrt(u0^2+1)-1)/u0^2

y(1) = x(2)

y(2) = -(delta-1/sqrt(x(1)^2+1))*x(1)

end

function y=odefun1(t,x)

global u0

y= zeros(size(x))

y(1) = x(2)

y(2) = (1-sqrt((u0^2+1)/(x(1)^2+1)))*x(1)

end


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12309078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存