假设我有一个m文件fun.m
,fun(t,x,g)
给出一个特定的值。但是,fun
是一个黑盒子,我不知道究竟是什么,因为m文件可能是由另一个程序员编写的。这里,fun
接受t和x的标量输入; g是一个功能。我可以输入的是t
,x
和由用户决定的函数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
来完成我的任务?如果是这样,如何更正上述代码以获得结果?