2016-04-18 9 views
0

В настоящее время я работаю над программой 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 

Спасибо!

+0

Я попробовал их решение и результат не именно то, что мне нужно. Я обновил свой вопрос с помощью этой информации. – Blake

+0

Я думаю, что самым простым решением является двоичная цифра, введенная как массив или единицы и нули, так как Matlab численно обрабатывает полиномы. – TroyHaskin

+0

Ну, как я это сделал, он по-прежнему преобразует пользовательский ввод в массив из 1 и 0, так что это не должно влиять на то, что нужно сделать для правильного разделения? – Blake

ответ

1

В MATLAB многочлены читаются в двоичном векторе слева направо. Например, x^3 + x есть [1 0 1 0], x^2 + x - [1 1 0]. Коэффициент Q (X) должен быть x^3-x вместо x^3 + x. Убедитесь, что входы в правильном формате, и вы должны получить следующий результат, как и следовало ожидать,

д =

1  0 -1  0 

с =

0  0  0  0  1  1  0 
+0

О, из всего, что я прочитал, я думал, что это противоположный порядок, [1, x, x^2, x^3 и т. Д.] Спасибо! – Blake