声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1110|回复: 4

[编程技巧] 隐函数调用

[复制链接]
发表于 2009-5-15 16:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
现有函数 f=q+b+c 程序如下
function v=fcn(h)
syms h,a,n,m
f1=[1 2 3 4 5 6 7 8 9];
q=a^2+a*n;
b=q+q*h+h^2;
c=b^2+b*q;
f=q+b+c;
v=sum(abs(f-f1)^2);

现在我需要调用函数v   用fminsearch 求出v 最小时 h 的值。
请问应该怎么实现。
我直接在另外一个.m 文件里 写下面的程序总报错:
clear all
close all
clc
function fun=fcn(h)
[x,fval]=fminsearch(fun,35:45)

报错如下:
??? function
            |
Error: "identifier" expected, "end of line" found.
找了相应的例子,和解释,也改了好久,还是不行,还请朋友们帮忙看看。
回复
分享到:

使用道具 举报

发表于 2009-5-16 01:24 | 显示全部楼层
建议楼主先看下function相关帮助文献
 楼主| 发表于 2009-5-18 15:45 | 显示全部楼层
看过帮助文件了,又改了。去掉了
clear all
close all
clc
function fun=fcn(h)
然后给fcn所用变量赋值,然后在用fminsearch
但还是报错

??? function
            |
Error: "identifier" expected, "end of line" found.
 楼主| 发表于 2009-5-18 15:49 | 显示全部楼层
fcn 中的变量我都用global 定义了,不用syms了。
需要的话我可以把原程序贴上来。
其实我写了一个简单的函数,在网上找的例子,能运行的。
但是到我自己这里,由于函数比较复杂,通过好多方程,才能推出最后的v,
所以实在是不知道问题在哪里了。
我用的版本是6,5 的。
要是改用7.1版本的 提示错误如下:
??? function
    |
Error: Function definitions are not permitted at the prompt or in scripts.
 楼主| 发表于 2009-5-18 17:14 | 显示全部楼层
问题解决,主要问题个人认为应该是因为
我调用函数的.m 文件的文件名叫function 所以不能用。
知道是这个问题,当时就差点没郁闷死。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-27 11:13 , Processed in 0.080108 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表