2016-11-29 240 views
0

我有一個大小爲p x p的矩陣A和矢量y = [y1,y2,...,yn]從MATLAB中的矩陣和矢量創建三維矩陣

我想要做的是創建一個尺寸爲p x p x n的3維矩陣,即它包含n條帶,其中每個條帶的大小爲p x p

如何每個頻帶被創建?:

每個帶等於在y乘以一個值的矩陣A。例如,第一個樂隊是A * y1,第二個樂隊是A * y2。另一方面,樂隊號碼i,其中i = 1, ..., n,等於A * yi

那麼,這可以很容易地使用for循環完成,但這是很平凡和昂貴的計算。我如何防止使用for循環?有沒有可以直接創建3D矩陣的非常快速的自動方法?

任何幫助將不勝感激。

回答

2

您可以使用bsxfunp x p矩陣乘以y中的每個值。我們必須將y重塑爲1 x 1 x n,儘管這樣乘法會創建第三個維度。

out = bsxfun(@times, A, reshape(y, 1, 1, [])); 

如果你在R2016b或更新版本(當MATLAB介紹隱廣播),您可以將其替換bsxfun簡單.*

out = A .* reshape(y, 1, 1, []); 
+0

非常感謝你親愛的:)) – Christina