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

看板MATLAB作者 (幻無影)時間14年前 (2011/08/12 23:52), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/4 (看更多)
※ 引述《jcjj (珍惜我們的緣份)》之銘言: : ※ 引述《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迴圈的方法嗎? 這是我目前想到的解法,不用迴圈,不過不保證速度就是了。 A = [4 5 3 4]; C = [2 1 0 3]; X = arrayfun(@(x)ones(1, x), A, 'UniformOutput', false); Y = arrayfun(@(x)zeros(1, x), C, 'UniformOutput', false); Z = reshape([X; Y], 1, []); D = cell2mat(Z); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.76.79

08/13 13:51, , 1F
i think it works!
08/13 13:51, 1F
文章代碼(AID): #1EHKn6Iy (MATLAB)
文章代碼(AID): #1EHKn6Iy (MATLAB)