matlab除法使用broadcast機制要小心

2021-08-28 04:55:32 字數 1281 閱讀 6984

習慣了python裡的broadcast機制後再來使用matlab要小心。特別是除法。在python中宣告乙個[2,10]的矩陣a除以[1,10]的矩陣b,後者會在長度為1的維度上進行broadcast,複製到滿足按元素除法的長度,最後b變成[2,10],並得到乙個[2,10]的結果。如下圖所示:

>>> a=np.ones((2,10))

>>> a

array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],

[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])

>>> b=np.ones((1,10))

>>> a/b

array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],

[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])

對於matlab而言則有所不同。直接使用/預設使用矩陣除法。必須使用./才能引起broadcast機制。如下圖所示:

>> a=ones(2,10),b=ones(1,10),a/b

a = 1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

b = 1 1 1 1 1 1 1 1 1 1

ans =

1.0000

1.0000

>> a=ones(2,10),b=ones(1,10),a./b

a = 1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

b = 1 1 1 1 1 1 1 1 1 1

ans =

1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

對於加、減、乘運算則無此問題。

搬運乙個更詳細的介紹:

不使用除法的「除法」

題目 給定乙個字串 s 和一些長度相同的單詞 words。找出 s 中恰好可以由 words 中所有單詞串聯形成的子串的起始位置。注意子串要與 words 中的單詞完全匹配,中間不能有其他字元,但不需要考慮 words 中單詞串聯的順序。示例 1 輸入 s barfoothefoobarman wo...

Matlab運用 Matlab簡單使用

plot u ifffinal,k linewidth 3 k代表黑色,還可以更換別的顏色,linewidth 3 設定所畫線條寬度為3磅 xlabel 待定位節點 設定x座標軸名稱 ylabel 誤差 m 設定y座標軸名稱 set gca,linewidth 2.5 設定座標軸寬度 a x 10 ...

matlab使用基礎

由於剛剛開始使用matlab,所知甚少,用到的都是很皮毛的東西。記下來就當做是筆記了。一 陣列 1 陣列的定義。matlab中陣列是按列儲存的。但是在使用的時候仍是符合正常的習慣,即行,列優先的順序。建立一行陣列 a 1 2 3 4 5 或者中間用 即a 1,2,3,4,5 建立一列陣列 b 1 2...