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.

>>
不知哪里出现了错误 希望大神指出帮忙改正
展开
 我来答
WM_THU
2014-04-23 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3933万
展开全部

不能在脚本文件里定义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)
更多追问追答
追问

function函数是该这么定义的,可是修改之后运行一下,又报错了,下面是报错的内容。。。。。您看看是不是还是哪里有问题呢


追答
把quad1该成quad试试。
fw...e@163.com
2014-04-23 · 贡献了超过163个回答
知道答主
回答量:163
采纳率:0%
帮助的人:50.6万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式