这是我的问题:
我有A = 1xN矩阵,B = 6xN矩阵 我还有一个函数F = @(x,y)......
我想做的是以每次F的输入参数为:A(1,i)和B(:,i)
的方式循环A和B的值为了获得一些时间,是否有一种方法可以为所有值而不使用for循环?
干杯
答案 0 :(得分:1)
使用较新版本的MATLAB循环并不像您想象的那么昂贵。如果你的函数F
相对简单,可以很容易地向量化,那么你通常可以获得比使用for循环更快的性能,但是如果F
表示相当复杂的操作,那么实际上可能需要更多的工作。试图绕过使用for循环。
在不知道F
实际做了什么的情况下,很难给出特定的答案。但是,除了vectorizing your operations之外,还有一些函数可以代替for循环用于某些情况。这些示例包括ARRAYFUN,CELLFUN,STRUCTFUN和BSXFUN。
作为如何使用BSXFUN的示例,假设您执行的操作F
涉及将B
的每列乘以{{的相应列中的值1}}。换句话说,A
适用于所有C(:,i) = A(1,i).*B(:,i);
。您可以使用BSXFUN执行此操作,如下所示:
i