用matlab代替函数输入参数的循环

时间:2010-07-07 12:29:35

标签: matlab

这是我的问题:

我有A = 1xN矩阵,B = 6xN矩阵 我还有一个函数F = @(x,y)......

我想做的是以每次F的输入参数为:A(1,i)和B(:,i)

的方式循环A和B的值

为了获得一些时间,是否有一种方法可以为所有值而不使用for循环?

干杯

1 个答案:

答案 0 :(得分:1)

使用较新版本的MATLAB循环并不像您想象的那么昂贵。如果你的函数F相对简单,可以很容易地向量化,那么你通常可以获得比使用for循环更快的性能,但是如果F表示相当复杂的操作,那么实际上可能需要更多的工作。试图绕过使用for循环。

在不知道F实际做了什么的情况下,很难给出特定的答案。但是,除了vectorizing your operations之外,还有一些函数可以代替for循环用于某些情况。这些示例包括ARRAYFUNCELLFUNSTRUCTFUNBSXFUN

作为如何使用BSXFUN的示例,假设您执行的操作F涉及将B的每列乘以{{的相应列中的值1}}。换句话说,A适用于所有C(:,i) = A(1,i).*B(:,i);。您可以使用BSXFUN执行此操作,如下所示:

i