2010-07-07 84 views
1

這是我的問題:替代MATLAB for循環函數輸入參數

我有A = 1×N個矩陣和B = 6XN矩陣 我也有一個函數F = @(X,Y)......

我想要做的是循環A和B的值,每次F的輸入參數爲:A(1,i)和B(:,i)

Is there爲了獲得一些時間而不使用for循環的所有值的方法?

乾杯

回答

1

隨着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);