在MATLAB中划分两个多项式

时间:2016-04-18 03:13:17

标签: matlab polynomial-math polynomials

我正在为MATLAB中的一个类开发循环代码程序,我试图找出划分两个多项式的最佳方法,即生成器P(X)和用户输入,移位通过3(x ^ 3 * D(X))得到商Q(X)和剩余C(X),这将允许我得到传输的数据T(X)= X ^ 3 * D(X )+ C(X)

到目前为止,我的程序代码以二进制形式输入用户4位输入,即

Insert 4-bit input: 1001

然后检查它以确保其有效,并转移它给出:

0 0 0 1 0 0 1

代表多项式

X^3 + X^6
然后我需要用生成多项式

来划分它
P(X) = 1 + X + X^3

在纸上解决,

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

谢谢!

1 个答案:

答案 0 :(得分:1)

在MATLAB中,多项式从左到右读取二进制向量。例如,x ^ 3 + x是[1 0 1 0],x ^ 2 + x是[1 1 0]。商Q(X)应该是x ^ 3-x而不是x ^ 3 + x。确保您的输入格式正确,并且您应该按预期获得以下结果,

q =

 1     0    -1     0

c =

 0     0     0     0     1     1     0