我正在为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
谢谢!
答案 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