Re: 依照向量數字產生1或0已回收

看板MATLAB作者 (珍惜我們的緣份)時間14年前 (2011/08/12 16:32), 編輯推噓5(509)
留言14則, 3人參與, 最新討論串2/4 (看更多)
※ 引述《jcjj (珍惜我們的緣份)》之銘言: : 請問: : 有一個向量:A=[4 5 3 4] : 但我想要根據A來做出: B=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] : ------- --------- ----- ------- : 4個1 5個1 3個1 4個1 : 但又不想用for 迴圈,請問有什麼辦法呢? : 同理,我若要做出0的向量該如何 多謝推文的回覆: 不過後來發現,原來我要的是: 給定兩個向量 A=[4 5 3 4],C=[2 1 0 3] 做出依照A向量的值做出數個1,且依照C向量的值做出數個0 兩者交錯放入向量D,使得: D = [1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0] ------- ^^^ --------- ^^^ ----- ^^^ ------- ^^^^^ 4個1 2個0 5個1 1個0 3個1 0個0 4個1 3個0 故D會等於:[1111001111101111111000] 想請問有不用for迴圈的方法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.27.56

08/12 17:14, , 1F
有甚麼原因不用for嗎 大量的話那用parfor勒
08/12 17:14, 1F

08/12 19:55, , 2F
用de2bi
08/12 19:55, 2F

08/12 19:56, , 3F
2^4-1+2^11-1-(2^6-1)+2^15-1-(2^12-1)+2^19-1-(2^15-1)
08/12 19:56, 3F

08/12 19:56, , 4F
de2bi(ans)
08/12 19:56, 4F

08/12 19:56, , 5F
原因請想想二進位的原則
08/12 19:56, 5F

08/12 19:57, , 6F
剩下的就是你要去寫把位數判斷再計算的問題
08/12 19:57, 6F

08/12 20:58, , 7F
這樣應該很容易爆掉吧 整數再怎麼長也有限
08/12 20:58, 7F

08/12 21:33, , 8F
太長的話拆成兩半再合併就不會爆啦
08/12 21:33, 8F

08/12 22:30, , 9F
拆多了不就又變成迴圈了嗎 說不定 overhead 還比較多?
08/12 22:30, 9F

08/12 22:44, , 10F
Zzzzzz 那你提出你的解決方法啊, 大‧師
08/12 22:44, 10F

08/12 22:49, , 11F
用if判斷式看你要拆成[a b c]還是[a b c d]都可以啊
08/12 22:49, 11F

08/12 22:50, , 12F
有人說一定要用for loop嗎? 莫名其妙!
08/12 22:50, 12F

08/12 23:49, , 13F
純討論沒有要攻擊的意思,如果造成誤會我先說聲抱歉。
08/12 23:49, 13F

08/12 23:50, , 14F
我目前所能夠想到的解法另外寫一篇好了。
08/12 23:50, 14F
文章代碼(AID): #1EHEKn8A (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1EHEKn8A (MATLAB)