java matlab 矩阵_如何在MATLAB中将函数应用于矩阵的每一行/列?
你可能想要更模糊的Matlab函數(shù)bsxfun . 從Matlab文檔中,bsxfun "applies the element-by-element binary operation specified by the function handle fun to arrays A and B, with singleton expansion enabled."
@gnovice在上面說(shuō)過,sum和其他基本函數(shù)已經(jīng)在第一個(gè)非單一維度上運(yùn)行(即,如果有多個(gè)行,則為行;如果只有一行,則為列;如果較低的維度都具有大小,則為更高的維度== 1 ) . 但是,bsxfun適用于任何功能,包括(尤其)用戶定義的功能 .
例如,假設(shè)你有一個(gè)矩陣A和一個(gè)行向量B.例如,讓我們說(shuō):
A = [1 2 3;
4 5 6;
7 8 9]
B = [0 1 2]
你想要一個(gè)函數(shù)power_by_col,它在向量C中返回A中所有元素到B的相應(yīng)列的冪 .
從上面的例子中,C是3x3矩陣:
C = [1^0 2^1 3^2;
4^0 5^1 6^2;
7^0 8^1 9^2]
即,
C = [1 2 9;
1 5 36;
1 8 81]
你可以使用repmat以蠻力的方式做到這一點(diǎn):
C = A.^repmat(B, size(A, 1), 1)
或者您可以使用bsxfun以優(yōu)雅的方式執(zhí)行此操作,bsxfun在內(nèi)部負(fù)責(zé)repmat步驟:
C = bsxfun(@(x,y) x.^y, A, B)
所以bsxfun會(huì)為你節(jié)省一些步驟(你不需要明確地計(jì)算A的尺寸) . 然而,在我的一些非正式測(cè)試中,事實(shí)證明,如果要應(yīng)用的函數(shù)(如上面的冪函數(shù))很簡(jiǎn)單,repmat的速度大約是其兩倍 . 因此,您需要選擇是否需要簡(jiǎn)單性或速度 .
總結(jié)
以上是生活随笔為你收集整理的java matlab 矩阵_如何在MATLAB中将函数应用于矩阵的每一行/列?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 模拟登陆exe_Java简单模
- 下一篇: kafka0.9 java commit