Гауссово исключение для решения Ax = b в matlab для булевых матриц - PullRequest
0 голосов
/ 29 января 2012

Извинения за чрезвычайно длинный пост. У меня есть следующий код, где я связываю для вычисления Ax = b с использованием исключения Matlab и Gaussian. Когда я сравниваю свой результат с фактическим ожидаемым результатом, результат является частично правильным. Я не уверен, где я на самом деле иду не так. Включая код и образцы матриц тоже.

[ grow, gcol ] = size(generator_matrix);
for i = 1 : grow - 1
    if ( generator_matrix(i,i) == 0 )
        t =  min ( find ( generator_matrix(i+1:grow,i) ~= 0 ) + i );
        temp = generator_matrix(i,:);
        generator_matrix(i,:) = generator_matrix(t,:);
        generator_matrix(t,:) = temp;
        tb = encoded_data(i,:);
        encoded_data(i,:)=encoded_data(t,:);
        encoded_data(t,:) = tb;
    end;
    for j = i+1 : grow
        m = -generator_matrix(j,i) / generator_matrix(i,i);
        generator_matrix(j,i) = 0;
        generator_matrix(j, i+1:grow) = generator_matrix(j, i+1:grow) + m * generator_matrix(i, i+1:grow);
        encoded_data(j,:) = mod(encoded_data(j,:) + m * encoded_data(i,:),2);
    end;
end;


x(grow,:) = encoded_data(grow,:) / generator_matrix(grow, grow);
for i = grow - 1 : -1 : 1
    x(i,:) = mod(( encoded_data(i,:) - sum ( x(i+1:grow) .* generator_matrix(i, i+1:grow) ) ),2) / generator_matrix(i,i);
end;

Примеры значений: значения матрицы генератора

    [ 1 1 1 1          
    0 1 0 0
    0 0 1 0
    0 0 0 1]    

значение закодированных данных

 [  1 1 1 1 0
    0 0 0 0 1
    0 1 1 1 0
    0 0 1 0 0 ]

Предполагается, что значение x будет (но вывод, который я сейчас получаю, не соответствует приведенной ниже матрице)

     [1 1 1 1 0
      0 0 0 0 1
      0 1 1 1 0
      0 0 1 0 0 ]

Любые предложения или подсказки будут очень полезны.

Я пытался выполнить код для больших матриц тоже 20x20, но я не получаю правильных результатов. Бхавья

...