主题:matlab中如何在函数文件中调用脚本文件的变量
1.脚本文件lxl422.m如下:
clc
clear
global xrt
global k1
global b1
%call for the spatial displacement data of the upper side
load aa.txt
%call for the spatial displacement data of the lower side
load bb.txt
% % % % % % % % % % % % % % % % % % % the upper side
x1=aa(:,1)+aa(:,2); %x-direction coordinate
y1=180+aa(:,3); %y-direction coordinate
plot(x1,y1,'*r')
hold on
xx=[1:1:1150];
y11=polyfit(x1,y1,9); % 9 polynomial fitting arithmetic
y111=polyval(y11,xx);
plot(xx,y111,'-r')
hold on
yy=spline(x1,y1);%计算上边线的样条函数,应该是只有样条函数才可以求导
dyy=fnder(yy); %求导
% % % % % % % % % % % % % % % % % % % the lower side
%下面程序目的是得到下边线的曲线拟合方程
x2=bb(:,1)+bb(:,2);
y2=0+bb(:,3);
plot(x2,y2,'*b')
hold on
%拟合命令
xx=[1:1:1300];
y22=polyfit(x2,y2,9);
y222=polyval(y22,xx);
plot(xx,y222,'-b')
%得到下边线曲线方程
yy=y22(1,1)*xx.^9+y22(1,2)*xx.^8+y22(1,3)*xx.^7+y22(1,4)*xx.^6+y22(1,5)*xx.^5+y22(1,6)*xx.^4+y22(1,7)*xx.^3+y22(1,8)*xx.^2+y22(1,9)*xx.^1+y22(1,10)*xx.^0;
plot(xx,yy,'-b')
hold on
%得到上边线某点xy坐标
for u=1:50:1151
u
v=polyval(y11,u)
k=ppval(dyy,u); %切线
b=v-k*u;
y=k*xx+b;
plot(xx,y,'-b');
hold on
k1=-1/k %垂线
b1=v-k1*u
xx=[1:1:1300];
y1=k1*xx+b1;
plot(xx,yy,'-b');
hold on
run('bb');
xrt
y222=polyval(y22,xrt); %此处的xrt是通过bb程序执行得到。
d=sqrt((u-xrt)^2+(v-y222)^2) %(u,v是上面线某点;(xrt,y222)是垂线与下边线交点)
end
2.另一脚本文件bb.m如下:
global xrt
global k1
global b1
%本程序目的是计算垂线和下边线的交点
xx=[1:1:1150];
xrt=fzero(@myfun,0)
3.函数文件myfun.m如下:
function f=myfun(xx)
global k1
global b1
y1=k1*xx+b1; %这个是垂线,通过aa程序得到垂线的斜率和b值
load bb.txt
x2=bb(:,1)+bb(:,2);
y2=0+bb(:,3);
y22=polyfit(x2,y2,9);
yy=y22(1,1)*xx.^9+y22(1,2)*xx.^8+y22(1,3)*xx.^7+y22(1,4)*xx.^6+y22(1,5)*xx.^5+y22(1,6)*xx.^4+y22(1,7)*xx.^3+y22(1,8)*xx.^2+y22(1,9)*xx.^1+y22(1,10)*xx.^0;
%上面这个函数是对下边拟合的多项式曲线
f=y1-yy;
end
运行结果如下:
......(省略一些重复的东西)
xrt =
[]
d =
[]
我觉得得到这样的结果的原因应该是:函数文件myfun.m中的k1和b1无法调用脚本文件lxl422.m中的k1和b1值,那么请问函数文件该怎样调用脚本文件中的变量呢??望高手们出手相助!不胜感激!!
clc
clear
global xrt
global k1
global b1
%call for the spatial displacement data of the upper side
load aa.txt
%call for the spatial displacement data of the lower side
load bb.txt
% % % % % % % % % % % % % % % % % % % the upper side
x1=aa(:,1)+aa(:,2); %x-direction coordinate
y1=180+aa(:,3); %y-direction coordinate
plot(x1,y1,'*r')
hold on
xx=[1:1:1150];
y11=polyfit(x1,y1,9); % 9 polynomial fitting arithmetic
y111=polyval(y11,xx);
plot(xx,y111,'-r')
hold on
yy=spline(x1,y1);%计算上边线的样条函数,应该是只有样条函数才可以求导
dyy=fnder(yy); %求导
% % % % % % % % % % % % % % % % % % % the lower side
%下面程序目的是得到下边线的曲线拟合方程
x2=bb(:,1)+bb(:,2);
y2=0+bb(:,3);
plot(x2,y2,'*b')
hold on
%拟合命令
xx=[1:1:1300];
y22=polyfit(x2,y2,9);
y222=polyval(y22,xx);
plot(xx,y222,'-b')
%得到下边线曲线方程
yy=y22(1,1)*xx.^9+y22(1,2)*xx.^8+y22(1,3)*xx.^7+y22(1,4)*xx.^6+y22(1,5)*xx.^5+y22(1,6)*xx.^4+y22(1,7)*xx.^3+y22(1,8)*xx.^2+y22(1,9)*xx.^1+y22(1,10)*xx.^0;
plot(xx,yy,'-b')
hold on
%得到上边线某点xy坐标
for u=1:50:1151
u
v=polyval(y11,u)
k=ppval(dyy,u); %切线
b=v-k*u;
y=k*xx+b;
plot(xx,y,'-b');
hold on
k1=-1/k %垂线
b1=v-k1*u
xx=[1:1:1300];
y1=k1*xx+b1;
plot(xx,yy,'-b');
hold on
run('bb');
xrt
y222=polyval(y22,xrt); %此处的xrt是通过bb程序执行得到。
d=sqrt((u-xrt)^2+(v-y222)^2) %(u,v是上面线某点;(xrt,y222)是垂线与下边线交点)
end
2.另一脚本文件bb.m如下:
global xrt
global k1
global b1
%本程序目的是计算垂线和下边线的交点
xx=[1:1:1150];
xrt=fzero(@myfun,0)
3.函数文件myfun.m如下:
function f=myfun(xx)
global k1
global b1
y1=k1*xx+b1; %这个是垂线,通过aa程序得到垂线的斜率和b值
load bb.txt
x2=bb(:,1)+bb(:,2);
y2=0+bb(:,3);
y22=polyfit(x2,y2,9);
yy=y22(1,1)*xx.^9+y22(1,2)*xx.^8+y22(1,3)*xx.^7+y22(1,4)*xx.^6+y22(1,5)*xx.^5+y22(1,6)*xx.^4+y22(1,7)*xx.^3+y22(1,8)*xx.^2+y22(1,9)*xx.^1+y22(1,10)*xx.^0;
%上面这个函数是对下边拟合的多项式曲线
f=y1-yy;
end
运行结果如下:
......(省略一些重复的东西)
xrt =
[]
d =
[]
我觉得得到这样的结果的原因应该是:函数文件myfun.m中的k1和b1无法调用脚本文件lxl422.m中的k1和b1值,那么请问函数文件该怎样调用脚本文件中的变量呢??望高手们出手相助!不胜感激!!