matlab中的function 问题求解答 15
clearclcB=[76504650795048908250510085505190885052209150519094505130975048901005046501...
clear
clc
B=[7650 4650
7950 4890
8250 5100
8550 5190
8850 5220
9150 5190
9450 5130
9750 4890
10050 4650
10350 4470
10650 4320
10950 4200
11250 4080
11550 3930
11850 3840
12150 3720
12450 3660
12750 3630
13050 3570
13350 3540
13650 3600
13950 3690
14250 3780
14550 3900];
function p=fun1(x)
x1=B(:,1);
y1=B(:,2);
f=@(x)interp1(x1,y1,x,'pchip');
t=@(x)(1+((f(x+0.001)-f(x))/0.001).^2).^0.5;
p=0.5*18*(quad1(t,7650,x(1)))^2+0.5*18*(quad1(t,x(1),x(2)))^2+18*quad1(t,7650,x(2))*sqrt((x(1)-9500)^2+(t(x(1))-4000)^2)+0.5*18*(quad1(t,x(2),x(3)))^2+0.5*18*(quad1(t,x(3),14550))^2+18*quad1(t,x(2),14550)*sqrt(x(3)-9500)^2+(t(x(3))-4000)^2);
end
x0=[7650,10000,14550];
[x,fval]=fminunc('fun1',xo)
这是我的程序代码 运行后的错误提示
function p=fun1(x)
|
Error: Function definitions are not permitted in this context.
>>
不知哪里出现了错误 希望大神指出帮忙改正 展开
clc
B=[7650 4650
7950 4890
8250 5100
8550 5190
8850 5220
9150 5190
9450 5130
9750 4890
10050 4650
10350 4470
10650 4320
10950 4200
11250 4080
11550 3930
11850 3840
12150 3720
12450 3660
12750 3630
13050 3570
13350 3540
13650 3600
13950 3690
14250 3780
14550 3900];
function p=fun1(x)
x1=B(:,1);
y1=B(:,2);
f=@(x)interp1(x1,y1,x,'pchip');
t=@(x)(1+((f(x+0.001)-f(x))/0.001).^2).^0.5;
p=0.5*18*(quad1(t,7650,x(1)))^2+0.5*18*(quad1(t,x(1),x(2)))^2+18*quad1(t,7650,x(2))*sqrt((x(1)-9500)^2+(t(x(1))-4000)^2)+0.5*18*(quad1(t,x(2),x(3)))^2+0.5*18*(quad1(t,x(3),14550))^2+18*quad1(t,x(2),14550)*sqrt(x(3)-9500)^2+(t(x(3))-4000)^2);
end
x0=[7650,10000,14550];
[x,fval]=fminunc('fun1',xo)
这是我的程序代码 运行后的错误提示
function p=fun1(x)
|
Error: Function definitions are not permitted in this context.
>>
不知哪里出现了错误 希望大神指出帮忙改正 展开
展开全部
不能在脚本文件里定义function。修改建议:
一, 将function 至 end 一段,另存为一个m文件,文件名必须是fun1.m。并略作修改如下:
function p=fun1(x, B)
x1=B(:,1);
y1=B(:,2);
f=@(x)interp1(x1,y1,x,'pchip');
t=@(x)(1+((f(x+0.001)-f(x))/0.001).^2).^0.5;
p=0.5*18*(quad1(t,7650,x(1)))^2+0.5*18*(quad1(t,x(1),x(2)))^2+18*quad1(t,7650,x(2))*sqrt((x(1)-9500)^2+(t(x(1))-4000)^2)+0.5*18*(quad1(t,x(2),x(3)))^2+0.5*18*(quad1(t,x(3),14550))^2+18*quad1(t,x(2),14550)*sqrt(x(3)-9500)^2+(t(x(3))-4000)^2);
end
二,剩下的代码保存为main.m。并略作修改如下:
clearclc
B = ... ;
x0=[7650,10000,14550];
[x,fval]=fminunc(@(x) fun1(x, B),x0)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询