フィルターのクリア

How do I write something to run this function?

4 ビュー (過去 30 日間)
WARRIOR24
WARRIOR24 2020 年 12 月 14 日
編集済み: Rik 2020 年 12 月 14 日
I am relativitly new to MATLAB. Most of my new learnings have been learning how to write and run BASIC Functions. I downloaded this CRC32 bit function from File Exchange and I am having a hard time to run/callout the function.
I am trying to enter a HEX number and return the CRC Calculation in HEX.'
I am trying to calculate the CRC for something like "00060D00"
function crc = crc32(data)
%crc32 Computes the CRC-32 checksum value of a byte vector.
%--------------------------------------------------------------------------
% CRC = crc32(DATA) computes the CRC-32 checksum value of the data stored
% in vector DATA. The elements of DATA are interpreted as unsigned bytes
% (uint8). The result is an unsigned 32-bit integer (uint32). Polynomial
% bit positions have been reversed, and the algorithm modified, in order
% to improve performance.
% Version: 1.00
% Programmer: Costas Vlachos
% Date: 23-Dec-2014
% Initialize variables
crc = uint32(hex2dec('FFFFFFFF'));
poly = uint32(hex2dec('EDB88320'));
data = uint8(data);
% Compute CRC-32 value
for i = 1:length(data)
crc = bitxor(crc,uint32(data(i)));
for j = 1:8
mask = bitcmp(bitand(crc,uint32(1)));
if mask == intmax('uint32'), mask = 0; else mask = mask+1; end
crc = bitxor(bitshift(crc,-1),bitand(poly,mask));
end
end
crc = bitcmp(crc);
I saved it a new folder and path with nothing in there except this function (crc32.m)
When I click "Run" directly in the "Script" Tab/Window, this is what I get in the Command Window:
>> crc32
Not enough input arguments.
Error in crc32 (line 16)
data = uint8(data);
And takes me to the "Run" and shows this:
Can some explain this to me as well as how to call and use this function? Write a code? What I need to do to run and execute this funtion? How to enter?
  2 件のコメント
Walter Roberson
Walter Roberson 2020 年 12 月 14 日
I am trying to calculate the CRC for something like "00060D00"
When you run the function by name, what is your expectation of where matlab will search to figure out that it is 00060D00 that it is to operate on this run?
WARRIOR24
WARRIOR24 2020 年 12 月 14 日
編集済み: WARRIOR24 2020 年 12 月 14 日
I believe:
>> data=[00060D00];

サインインしてコメントする。

採用された回答

KALYAN ACHARJYA
KALYAN ACHARJYA 2020 年 12 月 14 日
編集済み: KALYAN ACHARJYA 2020 年 12 月 14 日
crc32(data);
%......^??
You have to pass the input arguments (data) as mentioned in the function code. e.g.
>>data=[1:18]; % Pass the appropriate data type as per function defined??
>>crc32(data)
  8 件のコメント
WARRIOR24
WARRIOR24 2020 年 12 月 14 日
Thank you guys,
I have another question, later and it might along the lines of entering multiple inputs all at once:
"0000F0F03"
"AFCED902"
"['000F0990','00002020']"
Idk if that is possible to enter all at once. But the last input has me stopped now and if it is possible to enter that kind of entry.
Rik
Rik 2020 年 12 月 14 日
編集済み: Rik 2020 年 12 月 14 日
As Walter mentioned: dec2hex will convert the value to hexadecimal without any issues.
dec2hex(crc32(data))
The function you showed doesn't handle array inputs by default, so you will have to use a loop to process your inputs one by one. It is also possible to use arrayfun to hide the loop.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by