How do I compare two sets of numerical strings character by character on Matlab ?

3 次查看(过去 30 天)
I want to compare two sets of numerical data character by character e.g.
1011101 and 1011000
so that matlab will show that the 5 and 7th characters are different (0000101). I want to then count the number of differences (2).
If the terminology I use is wrong, please ignore that and focus on the example I have given to communicate what I want to do.
  4 个评论
Hannah
Hannah 2014-5-10
编辑:Hannah 2014-5-10
Thanks,
I'm having some trouble though because the numbers are too long so if I use xlsread, the number is coming up as NaN. Any ideas on how to solve this?
p.s. I managed to upload the file as a cvs manually, but then Matlab is having trouble processing the logical array ~=

请先登录,再进行评论。

采纳的回答

Star Strider
Star Strider 2014-5-8
Using MATLAB binary operations (considering the inputs — a and b here — are numbers:
a = 1011101;
b = 1011000;
A = num2str(a,'%d')
B = num2str(b,'%d')
ai = int16(bin2dec(A))
bi = int16(bin2dec(B))
C = dec2bin(bitxor(ai,bi))
HamDist = length(findstr(C,'1')) % Hamming Distance
produces:
HamDist =
2
What you want is known as the Hamming Distance between two binary numbers.

更多回答(1 个)

Jos (10584)
Jos (10584) 2014-5-8
a = '1011101'
b = '1011000'
q = a~=b % a logical array, true for locations where a and b differ
n = nnz(q) % count the number of non zeros (true)
  7 个评论
Sagar Damle
Sagar Damle 2014-5-10
编辑:Sagar Damle 2014-5-10
Hannah,though you have accidentally clicked on Star's answer,now you can vote for Jos by clicking on '0 votes' written below Noddy's picture!This will add two points to Jos's reputation!
Jos (10584)
Jos (10584) 2014-5-12
编辑:Jos (10584) 2014-5-12
Thanks Sagar, especially for recognising Noddy! I do not care so much about reputation anymore, but I like feedback.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by