習慣了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...