2014-11-14 14 views
0

我想创建一个for循环来运行我的程序并调出我创建的函数程序。我已经成功地让它运行,但现在我想再简化一步,通过将y定义为两个函数的向量而不是y1和y2来缩短我的程序。我试着用里面的函数创建一个2单元阵列,但这是一个失败的努力。这是我的。如何将y指定为Matlab中2个函数的向量?

f =cell(size(a)); 
f(1) =[@(t) 4*t]; 
f(2) =[@(t) 20+(5-t).^2]; 

任何关于将这2个组织成矢量的建议,以便单个输入y?

+1

嗨柯尔特所以没有任何答案提供帮助您? – 2014-11-16 16:26:19

回答

2

,如果你使用什么样的一个单元阵列,而不是:(!感谢@rayryeng)

f =cell(2,1); 

f(1) ={@(t) 4*t}; %// Note the curly braces 
f(2) ={@(t) 20+(5-t).^2}; 

或者使用以下,使用电池阵列哪个更直观。用花括号分配单元格的内容,而不是像上面那样做相反的事情。

f{1} [email protected](t) 4*t; 
f{2} [email protected](t) 20+(5-t).^2; 

celldisp(f) 

f{1} = 

    @(t)4*t 



f{2} = 

    @(t)20+(5-t).^2 
+0

小调。要访问每个元素,请使用大括号'{}'。单元阵列的圆括号一次用于切片或访问单元组。 – rayryeng 2014-11-14 19:14:09

+0

是的,谢谢你指出了!实际上,我将每个函数都分配在花括号内(在作业的右侧),但是我猜这有点不直观。将编辑。 – 2014-11-14 19:16:42

+1

@Colt事实上,[documentation](http://es.mathworks.com/help/matlab/ref/function_handle.html)(参见“提示”)说“不支持标准矩阵或函数句柄数组” 。你需要使用其他类型的数组,例如单元阵列, – 2014-11-14 19:16:52

1

另一种可能性是定义一个矢量值函数,它的成分是你的两个功能:

f1 = @(t) 4*t; 
f2 = @(t) 20+(5-t).^2; 
f = @(t) [f1(t) f2(t)]; 

因此,例如

>> f(2.5) 
>> ans = 
     10.0000 26.2500 
相关问题