我想创建一个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?
我想创建一个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?
,如果你使用什么样的一个单元阵列,而不是:(!感谢@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
小调。要访问每个元素,请使用大括号'{}'。单元阵列的圆括号一次用于切片或访问单元组。 – rayryeng 2014-11-14 19:14:09
是的,谢谢你指出了!实际上,我将每个函数都分配在花括号内(在作业的右侧),但是我猜这有点不直观。将编辑。 – 2014-11-14 19:16:42
@Colt事实上,[documentation](http://es.mathworks.com/help/matlab/ref/function_handle.html)(参见“提示”)说“不支持标准矩阵或函数句柄数组” 。你需要使用其他类型的数组,例如单元阵列, – 2014-11-14 19:16:52
另一种可能性是定义一个矢量值函数,它的成分是你的两个功能:
f1 = @(t) 4*t;
f2 = @(t) 20+(5-t).^2;
f = @(t) [f1(t) f2(t)];
因此,例如
>> f(2.5)
>> ans =
10.0000 26.2500
嗨柯尔特所以没有任何答案提供帮助您? – 2014-11-16 16:26:19