2016-04-18 8 views
0

私は現在、MATLABのクラス用の周期コードプログラムで作業していますが、2つの多項式、つまりジェネレータP(X)とユーザ入力を分割する最善の方法を理解しようとしています。 Q(X)とX(X)を得るために3(x^3 * D(X) X)+ C(X)2つの多項式をMATLABで除算する

私のプログラムのために私が持っているコードは、これまですなわち

Insert 4-bit input: 1001 

、バイナリのユーザー4ビットの入力にかかるその後、それは確かにその有効にするために、それをチェックし、それをシフトする:

私はその後、

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

生成多項式により、紙の上にそれを作業することを分割する必要がある多項式

X^3 + X^6 

の略

0 0 0 1 0 0 1 

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 

何だろうこれを行う最善の方法は?

私は次のことを試してみました:

% 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) 

私はこれを行くと、私が手:

q = 

    1 


c = 

    0 -1  0  0 

は、私は次のことを得るために、異なる行うために何が必要ですか?

q = 0 1 0 1 

c = 0 1 1 

ありがとう!

+0

、私は彼らのソリューションを試してみましたが、結果がでませんまさに私が必要なものです。その情報で私の質問を更新しました – Blake

+0

Matlabが数値的に多項式を扱う方法なので、最も単純な解決策は、バイナリ数字を配列または1と0として入力することです。 – TroyHaskin

+0

まあ、私がやったやり方は、ユーザー入力を1と0の配列に変換するので、除算を行うために何をする必要があるのか​​に影響しないはずです。 – Blake

答えて

1

MATLABでは、多項式はバイナリベクトルで左から右へ読み込まれます。たとえば、x^3 + xは[1 0 1 0]、x^2 + xは[1 1 0]です。 Quotient Q(X)は、x^3 + xの代わりにx^3-xでなければなりません。あなたの入力は適切なフォーマットであることを確認し、期待どおりには、次の結果を取得する必要があり、

Q =

1  0 -1  0 

C =

0  0  0  0  1  1  0 
+0

ああ、私が読んだことのすべてから、それは反対の順序だと思った[1、x、x^2、x^3など]ありがとう! – Blake

関連する問題