Matlab如何在定义函数过程中使用外部的变量?
举个例子:首先我定义y=[y1,y2],其中y1,y2可以是任意的数字,比如说y=[1,1]吧然后我函数的M文件是:functionf=gg(x)f=x(1)*y(1)+...
举个例子:
首先我定义y=[y1,y2],其中y1,y2可以是任意的数字,比如说y=[1,1]吧
然后我函数的M文件是:
function f=gg(x)
f=x(1)*y(1)+x(2)*y(2)
end
然后我代入a=[a1,a2],比如a=[1,3],我输入gg(a),最终提示为:y没有定义。
所以想请教大神,如果我要根据y的同作出不同的gg(x),比如说对1000个y作出1000个x,那么我怎么在函数的M文件中导入外部变量y呢?
别跟我说用匿名函数做,我上面的gg(x)只是举个例子,在实际中可能会用到高维函数,匿名函数根本不可能一个一个变量手动输入的。
我已经知道了,函数应该这样写
function f=gg(x)
global y;
f=x(1)*y(1)+x(2)*y(2);
end
然后主程序这样就可以了
global y
y=[1 1];
a=[1 3];
f(a)
就可以了 展开
首先我定义y=[y1,y2],其中y1,y2可以是任意的数字,比如说y=[1,1]吧
然后我函数的M文件是:
function f=gg(x)
f=x(1)*y(1)+x(2)*y(2)
end
然后我代入a=[a1,a2],比如a=[1,3],我输入gg(a),最终提示为:y没有定义。
所以想请教大神,如果我要根据y的同作出不同的gg(x),比如说对1000个y作出1000个x,那么我怎么在函数的M文件中导入外部变量y呢?
别跟我说用匿名函数做,我上面的gg(x)只是举个例子,在实际中可能会用到高维函数,匿名函数根本不可能一个一个变量手动输入的。
我已经知道了,函数应该这样写
function f=gg(x)
global y;
f=x(1)*y(1)+x(2)*y(2);
end
然后主程序这样就可以了
global y
y=[1 1];
a=[1 3];
f(a)
就可以了 展开
4个回答
展开全部
使用全局变量是一种思路,另外还有一种更可取的做法是用嵌套函数(Nested Function)。
全局变量在小型应用中不失为一种简单有效的做法,但在规模稍大的代码里一般是不提倡的,尤其是多人协作的情况下,存在隐患。
大致的代码结构如下:
function main
y=[1 1];
a=[1 3];
f(a)
function f=gg(x)
f=x(1)*y(1)+x(2)*y(2);
end
end
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
global是个好方法,学习了,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接sum(x.*y,2)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询