作者celestialgod (攸藍)
看板MATLAB
標題Re: [討論] 新手發問矩陣取值做xor
時間Thu May 21 15:34:33 2015
※ 引述《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
推 sonia6121: 這位大大真是太強了 !感謝!05/21 17:36
→ sonia6121: 請問txt檔取值的部分用我原本那個可以嗎?我原本那個05/21 17:45
應該可以吧,你讀進去也是cell
※ 編輯: celestialgod (36.225.239.88), 05/21/2015 18:03:00