看板 MATLAB 關於我們 聯絡資訊
小弟是matlab的新手,有個問題困擾了我一段時間,只好上來這裡請教各位高手 假設有一個矩陣A=[1 1 0 1 0 0 0 1 1 0 ],然後用另一個矩陣B=randn(1,5)使得 A變成一個在0和1的位置上具有常態分佈的矩陣。然後我的作法是直接暴力寫迴圈: A=[1 1 0 1 0 0 0 1 1 0]; B=randn(1,5); x=1; y=1; for n=1:1:10 if A(1,n)==1 A(1,n)=1+B(1,x); x=x+1; elseif A(1,n)==0 A(1,n)=B(1,y); y=y+1; end end 這樣跑完後,按照我的想法,理論上A的最大值應該會=B的最大值+1, A的最小值會=B的最小值,但是跑出來的數字卻都不對,A的最大值反而比B的最大值小 而A的最小值比B的最小值大...... T_T想破頭卻還是不知道問題出在哪...麻煩各位高手指點一下~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.192.124
kurt28:其實本來就不一定會成立 randn出來的是隨機的 你不知道最大 08/13 22:51
kurt28:跟最小值的位置在哪 照迴圈給的條件 該index A=1才會有1+B 08/13 22:53
kurt28:你可以參考randn的範例~ 不知道有沒有幫到忙@@ 08/13 22:55
np62077:@@"我點到workspace那邊就可以看到A跟B的最大值啦~ 08/13 22:58
np62077:我知道每次的最大值都會不一樣~可是每次加完的結果都是我 08/13 23:00
kurt28:是阿 可是B最大值的位置不一定會對應到A=1呀XD 08/13 23:00
np62077:0.0?我的B有跑兩次~對元素1跑一次 再對元素0跑一次 08/13 23:02
np62077:所以B的最大最小值都會用到兩次才對啊? 08/13 23:02
np62077:所以是不是我的用法錯了>"< 08/13 23:03
kurt28:所以原PO你要用的randn是1X5還是1X10呢? 08/13 23:26
kurt28:突然看到你在推文說的 回頭看你的文字敘述 是1X5 08/13 23:26
kurt28:可是code裡面用的是1X10 08/13 23:27
np62077:XD我打錯了~是一乘五的~~抱歉 08/13 23:32
※ 編輯: np62077 來自: 140.117.192.124 (08/13 23:32)
kurt28:我會比較建議你用範例1的方法去改 08/13 23:33
kurt28:標準差與分佈的關係在wiki上也查的到 08/13 23:35
kurt28:用你的code跑了一遍 得到的結果也符合你的敘述 所以不太懂 08/13 23:39
np62077:範例一指的是~~亂數randn的第一個範例嗎? 08/14 00:07
kurt28:對 08/14 11:22
np62077:QQ結果跟沒加點的一樣耶........好難過 08/14 12:28