Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

crc.generator

(削除済み) CRC 発生器オブジェクトの構築

crc.generator は削除されました。巡回冗長検査 (CRC) 符号のビットを生成するには、代わりに comm.CRCGenerator System object を使用します。推奨されるワークフローの詳細については、バージョン履歴を参照してください。

構文

h = crc.generator(polynomial)

h = crc.generator(detectorObj)

h = crc.generator(‘Polynomial’, polynomial, ‘param1’, val1, etc.)

h = crc.generator

説明

h = crc.generator(polynomial) は、生成多項式 POLYNOMIAL で定義された CRC 発生器オブジェクト H を構築します。

h = crc.generator(detectorObj) は、CRC 検出器オブジェクト DETECTOROBJ のパラメーターで定義された CRC 発生器オブジェクト H を構築します。

h = crc.generator(‘property1', val1, ...) は、PROPERTY/VALUE の組み合わせで指定されたプロパティを使用して CRC 発生器オブジェクト H を構築します。

h = crc.generator は、既定のプロパティを使用して CRC 発生器オブジェクト H を構築します。CRC-CCITT 発生器を構築し、次と等価になります。h = crc.generator('Polynomial', '0x1021', 'InitialState', '0xFFFF', ...

'ReflectInput', false, 'ReflectRemainder', false, 'FinalXOR', '0x0000')

プロパティ

次の表は CRC 発生器オブジェクトのプロパティについて説明します。Polynomial 以外のすべてのプロパティは書き換え可能です。

Property説明
Polynomial線形フィードバック シフト レジスタの接続を定義する生成多項式。このプロパティは、降べきの順の多項式を表すバイナリ ベクトルとして指定できます。この場合、多項式の先行する '1' を含めなければなりません。降べきの順の多項式の 16 進数を表す '0x' を前に付けて文字列として指定することもできます。この場合、多項式の先行する '1' は省略します。
InitialStateシフト レジスタの初期のコンテンツ。このプロパティは、バイナリ スカラーまたはバイナリ ベクトルとして、あるいは降べきの順の多項式の 16 進数を表す '0x' を前に付けて文字列として指定できます。バイナリ ベクトルとして指定する場合、長さは多項式のバイナリ ベクトル表現の長さよりも 1 少なくなければなりません。
ReflectInputシフト レジスタに入力する前に入力データをバイト単位で反転するかどうかを指定する boolean 量。
ReflectRemainder入力データがシフト レジスタを完全に通過した後にバイナリ出力 CRC のチェックサムをバイナリ単位で反転するかどうかを指定する boolean 量。
FinalXOR入力データに追加する直前の XORed となる CRC チェックサムをもつ値。このプロパティは、バイナリ スカラーまたはバイナリ ベクトルとして、あるいは降べきの順の多項式の 16 進数を表す '0x' を前に付けて文字列として指定できます。バイナリ ベクトルとして指定する場合、長さは多項式のバイナリ ベクトル表現の長さよりも 1 少なくなければなりません。

CRC 生成アルゴリズム

CRC 生成アルゴリズムについての詳細については、『Communications Toolbox™ ユーザー ガイド』のCRC 非直接アルゴリズムを参照してください。

発生器メソッド

encoded = generate(h, msg) は、CRC 発生器オブジェクト H を使用して入力メッセージの CRC チェックサムを生成します。チェックサムを MSG の末尾に付加します。バイナリ値の MSG は、列ベクトルの場合も行列の場合もあります。行列の場合は、各列は個別チャネルと見なされます。

CRC-16 CRC 発生器を作成し、それを使用して ASCII シーケンス '123456789' で表されるバイナリ ベクトルのチェックサムを生成します。

gen = crc.generator('Polynomial', '0x8005', ...
'ReflectInput', true, 'ReflectRemainder', true);
以下のメッセージは 1 ~ 9 桁の ASCII 表現です。
msg = int2bit((49:57)',8);
encoded = generate(gen, msg);
h = 

                Type: CRC Generator
          Polynomial: 0xF
        InitialState: 0xF
        ReflectInput: true
    ReflectRemainder: false
            FinalXOR: 0x0

バージョン履歴

R2008a で導入

すべて展開する

R2023b: 削除済み

crc.generator は削除されました。巡回冗長検査 (CRC) 符号を生成するには、代わりに comm.CRCGenerator System object を使用します。

crc.generator のインスタンスを comm.CRCGenerator System object に置き換えます。crc.generator プロパティと comm.CRCGenerator プロパティ間でのマッピングに注目してください。

crc.generatorcomm.CRCGenerator
多項式多項式
InitialStateInitialConditions
ReflectInputReflectInputBytes
ReflectRemainderReflectchecksums
FinalXORFinalXOR

古いワークフローを推奨のワークフローに移行する例については、以下の表を参照してください。

前のワークフロー推奨ワークフロー
data = randi([0 1],100,1);
oldO = crc.generator
encOld = generate(oldO,data);
oldO = 

                Type: CRC Generator
          Polynomial: 0x1021
        InitialState: 0xFFFF
        ReflectInput: false
    ReflectRemainder: false
            FinalXOR: 0x0000
data = randi([0 1],100,1);

sysO = comm.CRCGenerator('InitialConditions',1)
encNew = sysO(data);
sysO = 

  comm.CRCGenerator with properties:

           Polynomial: 'z^16 + z^12 + z^5 + 1'
    InitialConditions: 1
         DirectMethod: false
    ReflectInputBytes: false
     ReflectChecksums: false
             FinalXOR: 0
    ChecksumsPerFrame: 1
data = randi([0 1],96,1);

oldO = crc.generator('Polynomial', '0xF', 'InitialState', '0xF',...
'ReflectInput', true, 'FinalXOR', '0x0')

encOld = generate(oldO,data);
 Type: CRC Generator
          Polynomial: 0xF
        InitialState: 0xF
        ReflectInput: true
    ReflectRemainder: false
            FinalXOR: 0x0
data = randi([0 1],96,1);

sysO = comm.CRCGenerator('Polynomial',...
'0x1F','InitialConditions', [1 1 1 1],...
'ReflectInputBytes', true, 'FinalXOR', 0)

encNew = sysO(data);
sysO = 

  comm.CRCGenerator with properties:

           Polynomial: '0x1F'
    InitialConditions: [1 1 1 1]
         DirectMethod: false
    ReflectInputBytes: true
     ReflectChecksums: false
             FinalXOR: 0
    ChecksumsPerFrame: 1
data = randi([0 1],100,5); 

oldO = crc.generator([1 1 1 1 1])
 
encOld = generate(oldO,data);
oldO = 

                Type: CRC Generator
          Polynomial: 0xF
        InitialState: 0x0
        ReflectInput: false
    ReflectRemainder: false
            FinalXOR: 0x0
data = randi([0 1],100,5); 

sysO = comm.CRCGenerator('Polynomial',[1 1 1 1 1],...
 'ChecksumsPerFrame',5)

encNew = sysO(data(:));
sysO = 

  comm.CRCGenerator with properties:

           Polynomial: [1 1 1 1 1]
    InitialConditions: 0
         DirectMethod: false
    ReflectInputBytes: false
     ReflectChecksums: false
             FinalXOR: 0
    ChecksumsPerFrame: 5