永发信息网

matlab中,已在一个m文件里定义了一二元函数,如何在另一个m文件里给定其中一个值,把它变成一个一元函数

答案:2  悬赏:40  手机版
解决时间 2021-04-14 05:06
  • 提问者网友:喧嚣尘世
  • 2021-04-13 07:04
二元函数:
function yy=yy(x,y)
yy=3*x+4*y;
另一个函数:
function z2=z2(x)
z2=yy(x,2);
z2(4)
运行出错:
??? Input argument "x" is undefined.

Error in ==> z2 at 2
z2=yy(x,2);
最佳答案
  • 五星知识达人网友:野慌
  • 2021-04-13 07:15
我刚试了,你的程序没有问题的。
z2(4)

ans =

20

你把两个函数都保存好了然后进行调用
全部回答
  • 1楼网友:污到你湿
  • 2021-04-13 07:35
我的理解如下 已知: a=rand(8,1); = 0.5497 0.9172 0.2858 0.7572 0.7537 0.3804 0.5678 0.0759 b=rand(8,1); = 0.0540 0.5308 0.7792 0.9340 0.1299 0.5688 0.4694 0.0119 给出c的解析表达式:c=5+6*a+7*b+8*a.^2+9*b.^2 =11.1198 23.4844 18.2868 28.5195 15.1285 15.3344 16.2550 5.5857 即自变量为a和b,c为函数,5是常数项,6和7是一次项系数 8和9是二次项系数 要求:我们要通过函数拟合来得到这些系数:5 6 7 8 9 1)用polyfit是指单变量x与函数y之间的拟合关系 如果非要用这个函数,可以把二元的输入加权合并成一元输入,类似于一元回归的思想,比如将输入x=a+b(平均加权)作为输入变量,此时的映射关系为x为输入,c为函数输出 输入polyfit(x,c,2) 得到3.3457 8.2160 4.8824 即c=3.3457*x^2+ 8.2160*x+4.8824 =3.3457*(a+b)^2+ 8.2160*(a+b)+4.8824 或者你可以用更多阶来拟合 比如polyfit(x,c,3)得到1.0187 0.6132 10.1033 4.6768 2)可以用多元线性回归的命令regress 输入矩阵x=[ones(size(a)) a b a.*b a.^2 b.^2]; x为6列数据,得到的系数分别对应这6列 p=regress(c,x) p = 5.0000 6.0000 7.0000 0.0000 8.0000 9.0000 p就是需要求解的系数这里面出现了一个0是对应交叉项a*b的 因为之前的解析式中就没有交叉项所以该系数为0
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯