2010-10-21 114 views
0

我有一些代碼在下面,我似乎無法得到格式正確的矩陣。我一直試圖讓這些矩陣看起來更專業(與t和fprintf緊密結合在一起),但似乎不能這樣做。我在爲矩陣的每列添加標題時也遇到了一些麻煩。任何幫助將非常感激!MATLAB矩陣格式不正確

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

我沒有深入到你在做什麼真正深入研究,但有幾個指針: *把分號在行的末尾,你不希望打印屏幕 - 這使得它更容易看看其他地方發生了什麼。 *您爲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

嘗試使用num2str,並使用所需精度的格式參數。它意味着將矩陣轉換爲字符串。 (注意:這與mat2str不同,它們對基體進行序列化,因此它們可以用eval進行反序列化)