В настоящее время я работаю над программой Cyclic Code для класса в MATLAB, и я пытаюсь найти лучший способ разделить два многочлена, генератор P (X) и пользовательский ввод, сдвинутый на 3 (x^3 * D (X)), чтобы получить Котирующий Q (X) и Остаток C (X), что позволило бы мне получить переданные данные T (X) = X^3 * D (X) + C (X)Разделение двух многочленов в MATLAB
код у меня есть для моей программы до сих пор принимает пользователей 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
Спасибо!
Я попробовал их решение и результат не именно то, что мне нужно. Я обновил свой вопрос с помощью этой информации. – Blake
Я думаю, что самым простым решением является двоичная цифра, введенная как массив или единицы и нули, так как Matlab численно обрабатывает полиномы. – TroyHaskin
Ну, как я это сделал, он по-прежнему преобразует пользовательский ввод в массив из 1 и 0, так что это не должно влиять на то, что нужно сделать для правильного разделения? – Blake