2016-04-18 12 views
0

Ich arbeite gerade an einem Cyclic Code Programm für eine Klasse in MATLAB und ich versuche herauszufinden, wie man am besten zwei Polynome teilt, den Generator P (X) und die Benutzereingabe, um 3 (x^3 * D (X)) verschoben, um den Quotienten Q (X) und Rest C (X) zu erhalten, was es mir erlauben würde, die übertragenen Daten T (X) = X^3 * D (X) + C (X)Aufteilung von zwei Polynomen in MATLAB

Der Code, den ich für mein Programm haben, so nimmt weit in den Benutzer 4-Bit-Eingang in binär, dh

Insert 4-bit input: 1001 

Dann überprüft er es auf seine Gültigkeit stellen sie sicher, und verschiebt es gibt:

0 0 0 1 0 0 1 

, die für das Polynom

steht
X^3 + X^6 

ich dann teilen müssen, dass durch das Generatorpolynom

P(X) = 1 + X + X^3 

es Arbeiten auf Papier,

x^6 + X^3 
___________ 
x^3 + x + 1 

Gives: Q(X) = X^3 + X 
     R(X) = X^2 + X 

So, T(X) = X^6 + X^3 + X^2 + X, which is 0111001 for the Codeword 

Was wäre der beste Weg, dies zu tun?

Ich habe folgendes versucht:

% Prompt for User input 
b4_in = input('Insert 4-bit input: ' ,'s'); %Input 1001 

%% CHECK FOR VAILD INPUT %% 

dec_in = bin2dec(b4_in) 

bin_in = fliplr(de2bi(dec_in)) %User input in Binary 

d = [0000000]; %Calculating X^3 * D(X) 
d = bin_in; 
d(7)=0; 
d = fliplr(d); %Gives 0 0 0 1 0 0 1 

d 

gen_pol = [1 1 0 1] %P(X) = 1 + X + X^3 

[q, c] = deconv(bin_in, gen_pol) 

Als ich das gehen, erhalte ich:

q = 

    1 


c = 

    0 -1  0  0 

Was muss ich anders tun müssen, die folgenden zu bekommen?

q = 0 1 0 1 

c = 0 1 1 

Vielen Dank!

+0

habe ich versucht, ihre Lösung und das Ergebnis ist nicht genau was ich brauche. Ich aktualisierte meine Frage mit dieser Information – Blake

+0

Ich denke, die einfachste Lösung ist, die Binärzahl als ein Array oder Einsen und Nullen eingegeben zu haben, da Matlab numerisch Polynome behandelt. – TroyHaskin

+0

Nun, wie ich es gemacht habe, konvertiert es immer noch die Benutzereingabe in ein Array von 1s und 0s, so dass sollte nicht beeinflussen, was getan werden muss, um die Division richtig zu machen? – Blake

Antwort

1

In MATLAB lesen Polynome einen Binärvektor von links nach rechts. Zum Beispiel ist x^3 + x [1 0 1 0], x^2 + x ist [1 1 0]. Der Quotient Q (X) sollte x^3-x anstelle von x^3 + x sein. Stellen Sie sicher, dass Ihre Eingaben im richtigen Format sind, und Sie sollten folgendes Ergebnis wie erwartet,

q =

1  0 -1  0 

c =

0  0  0  0  1  1  0 
+0

Oh, von all den Dingen, die ich gelesen habe, dachte ich, es sei die umgekehrte Reihenfolge, [1, x, x^2, x^3, etc ...] Danke! – Blake