查看: 196|回复: 2|关注: 0

[已答复] matlab函数的输出值怎么在另外一个函数调用?

[复制链接]

新手

8 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
发表于 2020-2-16 17:36:55 | 显示全部楼层 |阅读模式
本帖最后由 TouAkira 于 2020-2-16 09:02 编辑

function [K,fval]=K()
G=GH(t);
F=@(K)(2*G*b*[K(1) K(2) K(3) K(4) K(5) K(6)]'+[K(1) K(2) K(3) K(4) K(5) K(6)]*(G*sigma*sigma'+R)*[K(1) K(2) K(3) K(4) K(5) K(6)]');
K0=[0 0.1 0.1 0.1 0 0.1];
A=[0 0 0 0 0 0; 0 -1 0 0 0 0; 0 0 -1 0 0 0; 0 0 0 -1 0 0; 0 0 0 0 0 0; 0 0 0 0 0 -1];
a=[0 0 0 0 0 0];
[K,fval]=fmincon(F,K0,A,a,[],[],[],[],[],[]);
end

function G=GH(t)
global T
if t<T
    G=GH(t+Delta)*(1+Delta*2*r)+Delta*fval(t+Delta);
else
    G=1;
end
end

上面两个函数互为嵌套函数(其中Delta、r、t、T是数,b是1*6向量、R和sigma是6维矩阵、K是1*6符号向量)fval是最小值函数的函数值
请问fval要怎么调用?还有这程序有什么不对的地方,一直运行不出来,求各位大神帮帮忙

请不要搞什么仅作者可见,要不然管理员也对等地设置其他帖子你都看不见,这对论坛、对其他坛友还有帮助吗?


论坛优秀回答者

5

主题

1918

帖子

552

最佳答案
  • 关注者: 159
发表于 2020-2-16 20:59:11 | 显示全部楼层
错误比较多,建议仔细读读关于函数方面的帮助文档。

[K,fval]=K() 这个地方就很不好,自定义函数的名称,与返回的计算变量重名,很难说清到底是在做什么。而且这个函数本身不需要输入变量,那么你的这句G=GH(t);中的t的数值就是空的没有定义。另一个函数也类似,其中要使用fval这个变量,但既不把fval当做输入变量,也不额外使用全局变量global变量来让其数值能够被当前函数调用,这样很容易出问题。

建议是,你先自己根据算法写一个流程图,弄清楚每一步需要哪些变量作为输入,又能将哪个变量计算出来作为输出;然后根据这些写函数,每个函数至少要做到,在其代码内部,调用的参与计算的变量要么被当做输入经过外部输入进来,要么通过全局变量可以直接从主代码调用,并对结算结果进行输出或改写对应的全局变量数值。
提问请:①准确描述问题②提出你的思考(等着抄作业的一律锁帖)③提供代码文本而非截图④及时反馈

新手

8 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
 楼主| 发表于 2020-2-19 09:48:08 | 显示全部楼层
TouAkira 发表于 2020-2-16 20:59
错误比较多,建议仔细读读关于函数方面的帮助文档。

[K,fval]=K() 这个地方就很不好,自定义函数的名称, ...

谢谢大佬,我改进改进
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

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