替代MATLAB for循环函数输入参数

问题描述:

这是我的问题:替代MATLAB for循环函数输入参数

我有A = 1×N个矩阵和B = 6XN矩阵 我也有一个函数F = @(X,Y)......

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

Is there为了获得一些时间而不使用for循环的所有值的方法?

干杯

随着MATLAB循环的较新版本并不像你想象的那么昂贵。如果你的函数F是相对简单的东西,可以很容易地进行矢量化,那么你通常可以获得比使用for循环更快的性能,但是如果F代表一个相当复杂的操作,实际上可能需要更多的工作来尝试使用for循环。

不知道F实际上做了什么,很难给你一个具体的答案。但是,除了vectorizing your operations之外,还有一些函数可用于代替某些情况下的for循环。这些的一些例子是ARRAYFUN,CELLFUN,STRUCTFUNBSXFUN

至于如何使用BSXFUN,让我们说,你正在执行的操作F涉及通过在A相应的列中的值的B每一列乘以一个例子。换句话说,所有iC(:,i) = A(1,i).*B(:,i);。你可以这样做,使用BSXFUN如下:

C = bsxfun(@times,B,A);