Отображение перестановок: двоичный код Хэмминга
У меня есть двоичный код Хемминга с матрицей генератора
G = [1 0 0 0 1 0 1;
0 1 0 0 1 1 1;
0 0 1 0 1 1 0;
0 0 0 1 0 1 1];
а также u
это полученный вектор u = [0.5 0.3 1.3 -0.1 0.7 0.6 1.5]
,
Полученный вектор перестановки, основанный на уменьшающихся значениях:
v = p(u) = [1.5 1.3 0.7 0.6 0.5 0.3 -0.1]
с p = (5 6 2 7 3 4 1)
,
Переставленная матрица генератора:
G1 = [1 0 1 0 1 0 0;
1 0 1 1 0 1 0;
0 1 1 1 0 0 0;
1 0 0 1 0 0 1];
Я пытался запрограммировать этот пример, но я не могу найти точно такой же ответ, я нахожу p
разные, но одинаковые v
а также G1
,
Мой код:
G = [1 0 0 0 1 0 1;
0 1 0 0 1 1 1;
0 0 1 0 1 1 0;
0 0 0 1 0 1 1];
u = [0.5 0.3 1.3 -0.1 0.7 0.6 1.5];
[~,p] = sort(u,'descend');
v = u(p);
G1 = G(:,[p]);
Я получаю:
v = [1.5 1.3 0.7 0.6 0.5 0.3 -0.1];
p = [7 3 5 6 1 2 4];
G1 = [1 0 1 0 1 0 0;
1 0 1 1 0 1 0;
0 1 1 1 0 0 0;
1 0 0 1 0 0 1];
В чем проблема в моем коде? Я хотел бы получить те же результаты, что и в примере.
Спасибо!