Re: [討論] 新手發問矩陣取值做xor

看板MATLAB作者 (攸藍)時間10年前 (2015/05/21 15:34), 10年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《sonia6121 (sonia)》之銘言: : 這是我第一次發文發問,如有冒犯錯誤請各位大大們糾正我 : 我是matlab新手剛接觸不久 : 最近在寫一個程式 : 我的目的是要把txt檔裡面的值取出來 : [0111 : 00101 : 11011 : ... : ...共26行] : 每行兩兩相比總共會有325種組合 : 長度相同的直接做xor(ex:00101 )xor=11110然後再做sum取出1+1+1+1+0=4這個值 : 11011 : 假如長度不同就要分別用前段跟後段取xor在相加(ex:0111 )xor的作法(0111)=0101 : 00101 0010 : 做sum=2再和xor(0111)=0010 sum=1 相加=3 : 0101 % data generation M = cell(26, 1); for i = 1:26 M{i, 1} = randi(2, randi(2,1,1)+3, 1)' - 1; end % total combinations combns = nchoosek(1:size(M, 1), 2); % results dfree = zeros(size(combns, 1), 1); % computation for i = 1:size(combns, 1) % temporary variables (可以不用,只是程式易讀性低) a = M{combns(i, 1), 1}; b = M{combns(i, 2), 1}; len_a = length(a); len_b = length(b); % if the lengths are equal if len_a == len_b dfree(i) = sum(xor(a, b)); else % nonequal condition if len_a > len_b dfree(i) = sum(xor(a(1:len_b), b)) + ... sum(xor(a((len_a-len_b+1):end), b)); else dfree(i) = sum(xor(a, b(1:len_a))) + ... sum(xor(a, b((len_b-len_a+1):end))); end end end -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.239.88 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1432193676.A.5D4.html ※ 編輯: celestialgod (36.225.239.88), 05/21/2015 15:57:59

05/21 17:36, , 1F
這位大大真是太強了 !感謝!
05/21 17:36, 1F

05/21 17:45, , 2F
請問txt檔取值的部分用我原本那個可以嗎?我原本那個
05/21 17:45, 2F
應該可以吧,你讀進去也是cell ※ 編輯: celestialgod (36.225.239.88), 05/21/2015 18:03:00
文章代碼(AID): #1LNOgCNK (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1LNOgCNK (MATLAB)