Матрица MATLAB неправильно форматируется - PullRequest
0 голосов
/ 21 октября 2010

У меня есть код ниже, и я не могу правильно отформатировать матрицы. Я пытался заставить матрицы выглядеть более профессионально (близко друг к другу) с помощью \ t и fprintf, но, похоже, не могу этого сделать. У меня также есть некоторые проблемы с размещением заголовков для каждого столбца матрицы. Любая помощь будет высоко ценится!

clear all
clc

format('bank')

%    input file values    %
A = [4 6 5 1 0 0 0 0 0; 7 8 4 0 1 0 0 0 0; 6 5 9 0 0 1 0 0 0; 1 0 0 0 0 0 -1 0 0; 0 1 0 0 0 0 0 -1 0; 0 0 1 0 0 0 0 0 -1];
b = [480; 600; 480; 24; 20; 25];
c = [3000 4000 4000 0 0 0 0 0 0];

% Starting xb %
xb = [1 2 3 4 5 6]

% Starting xn %
xn = [7 8 9]


cb = c(xb)
cn = c(xn)

% Get B from A %
B = A(:,xb)

% Get N from A %
N = A(:,xn)

% Calculate z %
z = ((cb*(inv(B))*A)-c)

% Calculate B^(-1) %
Binv = inv(B)

% Calculate RHS of row 0 %
RHS0 = cb*Binv*b

% Calculates A %
A = Binv*A


%STARTING Tableau%
ST = [z RHS0;A b]
for j=1:A
    fprintf(1,'\tz%d',j)
end

q = 0
while q == 0



    m = input('what is the index value of the ENTERING variable?  ')
    n = input('what is the index value of the LEAVING variable?  ')

    xn(xn==m)= n
    xb(xb==n) = m


    cb = c(xb)
    cn = c(xn)
    B = A(:,xb)
    N = A(:,xn)

    Tableuz = (c-(cb*(B^(-1))*A))
    RHS0 = (cb*(B^(-1))*b)
    TableuA = ((B^(-1))*A)
    Tableub = ((B^(-1))*b)

    CT = [Tableuz RHS0; TableuA Tableub];
    disp(CT)
    q = input('Is the tableau optimal? Y-1, N-0')


end

Ответы [ 2 ]

2 голосов
/ 21 октября 2010

Я не углублялся в то, что вы делаете действительно глубоко, но несколько указателей: * Поставьте точки с запятой в конце строк, которые вы не хотите печатать, на экран - это упрощает просмотр того, что происходит в другом месте. * Ваш для j = 1: цикл печатает только j. Я думаю, что вы хотите, больше похоже на это:

for row = 1:size(A,1)
   for column = 1:size(A,2)
       fprintf('%10.2f', A(row,column));
    end
    fprintf('\n');
end
  • Если вы еще не использовали отладчик Matlab, попробуйте; это облегчает выявление многих из этих проблем. Все, что вам нужно сделать, чтобы начать, это добавить точку останова в файл, нажав тире (-) рядом с номерами строк и запустив скрипт. Быстрый поиск в Интернете также может очень быстро найти решение - у кого-то другого уже была проблема, с которой вы столкнетесь.

Удачи.

0 голосов
/ 21 октября 2010

Попробуйте использовать num2str с аргументом формата желаемой точности.Он предназначен для преобразования матриц в строки.(примечание: это отличается от mat2str, который сериализует матрицы, поэтому их можно десериализовать с помощью eval)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...