Converting vector to binary and summing it
显示 更早的评论
Greetings,
I have a large vector 2048 x 1 of numbers I need to convert into binary and add them all togather (disregarding overflow) to create a checksum. Can I convert all the numbers to binary with a
dec2bin( decimal number) followed by a sum(vector)
Commands? This data is written to flash memory and we need to impliment a checksum
Thanks
2 个评论
Walter Roberson
2012-5-17
Is binary 11 + 11 to result in 10 ? That is, carry is used within the word, but overflow beyond the word is discarded?
Image Analyst
2012-5-17
Which checksum algorithm are you using? http://en.wikipedia.org/wiki/Checksum
采纳的回答
更多回答(7 个)
Thomas
2012-5-17
0 个投票
dec2bin gives the output as a string.. You will need to do more processing to actually get it numerically useful..
2 个评论
William
2012-5-17
Walter Roberson
2012-5-17
subtract '0' (the character string that is a zero). That will get you numeric 0 and 1. But doing arithmetic on that can be tedious if you need to compute all the carries yourself. Hence my question, above which you have not answered :(
James Tursa
2012-5-17
0 个投票
What is the range of your numbers? You might be able to simply convert them to double, then add them, then mod the result with an appropriate value for your target wordsize.
Walter Roberson
2012-5-17
0 个投票
Use John D'Errico's MATLAB File Exchange contribution vpi package. Add the numbers without converting them to decimal. Take the result mod 2^(your word size) to get the result.
Walter Roberson
2012-5-17
0 个投票
Use the fixedpoint arithmetic package with the arithmetic properties set to "wrap" instead of "saturate".
William
2012-5-17
0 个投票
4 个评论
Walter Roberson
2012-5-17
I do not understand how the 1024 number vector relates to the 16 bytes? If the 16 bytes are to be sort of added on to a constant 1024 number vector, then pre-calculate the sum on the 1024 number vector so there is less work to do.
These vectors of 1024 numbers: what data type and range are those? There is a difference in approach if they are uint8 compared to if they are 8 byte IEEE double precision floating point numbers.
William
2012-5-18
Jan
2012-5-18
What is the purpose of the checksum? It will detect some 1-bit errors, but not all and even less 2 bit errors.
Walter Roberson
2012-5-18
Still it is a very common checksum, still in wide use as a "sanity check"
Walter Roberson
2012-5-18
0 个投票
convert the vector to 32 bit unsigned. sum() it. Extract the last 16 bits with bitget() or bitand() or mod()
2 个评论
NGR MNFD
2021-10-2
hi dear
can you help me ? I want to know
How can I check the checksum of the force signal binary file? This force signal is measured by a 12-bit adc. I was able to display it through the following method.
fileID1=fopen('control1.let','r');
A= fread(fileID1, [3, 45000], 'uint8')'; % matrix with 3 rows, each 8 bits long, = 2*12bit
fclose(fileID1);
M2H= bitshift(A(:,2), -4);
M1H= bitand(A(:,2), 15);
PRL=bitshift(bitand(A(:,2),8),9); % sign-bit
PRR=bitshift(bitand(A(:,2),128),5); % sign-bit
M( : , 1)= bitshift(M1H,8)+ A(:,1)-PRL;
M( : , 2)= bitshift(M2H,8)+ A(:,3)-PRR;
N1 = reshape(M',[90000,1]); plot(N1);
Can I also check to see if it is correct or not? I do not know what code to use in MATLAB to calculate checksum? Please show me. Thank you.
Walter Roberson
2021-10-2
A= fread(fileID1, [3, 45000], 'uint8')'; % matrix with 3 rows, each 8 bits long, = 2*12bit
To be clear, the above code would store into A(1,1) then A(2,1), then A(3,1) then A(1,2) then A(2,2) then A(3,2) and so on. 3 rows, stored along the rows.
But when talking about binary data created by something else, it is common for data to be stored across the columns, rather than down the rows -- for the first entry to be A(1,1), then A(1,2), A(1,3) ... then after all the columns, A(2,1), A(2,2) and so on.
You need to be clear as to which arrangement you have.
Also your comment talks about 3 rows each each bits long, implying that it forms two 12 bit numbers. Is the implication But again it is important to know which order the data is stored in.
Fa Fa
2012-6-25
0 个投票
Hi All, i like to create lookup tables of 511 local binary pattern, also from 10000000 bis 111111110, can somebody help, Thanks
1 个评论
Walter Roberson
2012-6-25
I recommend opening a new Question for this topic.
类别
在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!