我可以矢量化以下内容吗?

时间:2016-09-02 15:03:59

标签: matlab

假设我有一个m文件fun.mfun(t,x,g)给出一个特定的值。但是,fun是一个黑盒子,我不知道究竟是什么,因为m文件可能是由另一个程序员编写的。这里,fun接受t和x的标量输入; g是一个功能。我可以输入的是tx和由用户决定的函数g。但是,如果我决定使用g作为特定功能,我不会改变功能,即如果我决定使用g=@(y)y.^2,那么我想编写一个程序,允许其他用户输入向量t和标量值x。例如,如果用户选择t=[1,2,3,4]x=5,我的程序可以输出fun([1,2,3,4],5,@(t)t^2),而如果用户选择t=[1,2,3,4,6]x=10,我的程序可以输出fun([1,2,3,4,6],10,@(t)t^2)

最初,我使用for循环来解决问题,如果可能的话我想使用arrayfun,我写的内容如下:

g=@(y)y.^2 TEST=@(T,t)arrayfun(@(s,x)fun(s,x,@(y)g(y)),T,t)

不幸的是,TEST([1,2,3,4],5)会出错,说维度不匹配。我想问:是否可以使用arrayfun来完成我的任务?如果是这样,如何更正上述代码以获得结果?

0 个答案:

没有答案