Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将这个CRC校验从Matlab转换为c#?_C#_Matlab - Fatal编程技术网

如何将这个CRC校验从Matlab转换为c#?

如何将这个CRC校验从Matlab转换为c#?,c#,matlab,C#,Matlab,我想把这个MATLAB函数转换成c# 但我的结果并不像预期的那样 MATLAB: function check=CRC8(xa); % xa is array of bits to be transmitted (column vector) % Generates 8-bit CRC check with g(x) = x^8 + x^2 +x + 1 xae = [xa;0;0;0;0;0;0;0;0]; % Append 8 zeros to array containing bi

我想把这个MATLAB函数转换成c# 但我的结果并不像预期的那样

MATLAB:

function check=CRC8(xa);
% xa is array of bits to be transmitted (column vector)
% Generates 8-bit CRC check with g(x) = x^8 + x^2 +x + 1
    xae = [xa;0;0;0;0;0;0;0;0]; % Append 8 zeros to array containing bit-stream
    g8x = [1;0;0;0;0;0;1;1;1] ; % Generator polynomial
    xsa=xae(1:9);
    for i=1:length(xa)
        if xsa(1) = = g8x(1), xsa = xor(xsa,g8x); end;
        xsa(1:8)=xsa(2:9);
        if i<length(xa) xsa(9)=xae(i+9); end;
    end;
    check = xsa(1:8); % 8 bit CRC column vector
    return;
功能检查=CRC8(xa);
%xa是要传输的位数组(列向量)
%生成g(x)=x^8+x^2+x+1的8位CRC校验
xae=[xa;0;0;0;0;0;0;0];%向包含位流的数组追加8个零
g8x=[1;0;0;0;0;0;1;1;1];%生成多项式
xsa=xae(1:9);
对于i=1:长度(xa)
如果xsa(1)=g8x(1),xsa=xor(xsa,g8x);结束;
xsa(1:8)=xsa(2:9);

如果我像
xsa=xae(1:9)
这样的matlab范围是包含的,那么
xsa
应该有九个元素,而不是八个。另外,由于您的
i
已经是基于零的,我认为最后一个if应该与
xa.Length-1
进行比较,并使用
i+9
处的数组元素,而不是
i+8

if (i < xa.Length - 1)
{
   xsa[xsa.Length - 1] = xae[i + 9];
}
if(i
if (i < xa.Length - 1)
{
   xsa[xsa.Length - 1] = xae[i + 9];
}