2013-10-04 89 views
-2

我在matlab中得到了這個錯誤 未定義變量「txt」或類「txt」。 我知道我應該定義txt來解決問題。最大的問題是我不知道txt是什麼。我試過txt = 1,但這沒有奏效。我現在有此代碼Matlab未定義變量「txt」或類「txt」

clr  = [0 0 0 ; 1 0 0 ; 0 1 0 ; 0 0 1 ; 1 1 0 ; 1 0 1 ; 0 1 1]; 
    style = [{'-'} {':'} {'--'} {'-.'}]; 
    nc  = 1; 
    ns  = 1; 
    n  = 1; 
    l(n) = 1; 

    close all 
    p  = plot(XX,YY,'ro','MarkerFaceColor','b','MarkerSize',20); 
    axis equal 
    V  = axis; 
    r_x  = (V(2) - V(1))/ 20; 
    r_y  = (V(4) - V(3))/ 20; 
    axis([V(1)-r_x V(2)+r_x V(3)-r_y V(4)+r_y]); 
    hold on 
    for i=1:airports 
     t(i) = text(XX(i),YY(i),['\bfA'num2str(i)],'HorizontalAlignment','Center','VerticalAlignment','Middle','Color','w'); 
     for j= 1:airports 
      j=1; 
      if Pax(i,j) >= cplex.Param.mip.tolerances.integrality.Cur 
       l(n) = line([XX(i) XX(j)],[YY(i) YY(j)],'Color',clr(nc,:),'LineStyle',style{ns},'LineWidth',Flights(i,j)); 
       nc  = nc + 1; 
       if nc > size(clr,1) 
        ns  = ns + 1; 
        nc  = 1; 
       end 
       txt{n} = ['A' num2str(i) '\leftrightarrow' 'A' num2str(j) ', ' num2str(Pax(i,j)) ' Pax, ' num2str(Flights(i,j)) ' Flight(s)']; 
       n  = n + 1; 
      end 

    end 
    n  = (n - 1); 
    legend(l(1:n),txt{1:n},'Location','EastOutside'); 
    uistack(p,'top'); 
    uistack(t,'top'); 
    set(gcf,'Units','Centimeters'); 
    set(gcf,'Position',[10 2 25 16]); 

txt有兩次。第一個txt {n} = .....然後它被用在圖例函數中。 應該我所說的TXT或我應該怎麼做才能解決這個

回答

0

我猜你的病情if Pax(i,j) >= cplex.Param.mip.tolerances.integrality.Cur是不正確的,所以txt永遠不會被定義,當您嘗試使用它作爲參數傳遞給您的legend函數調用,它很正確地錯誤出來,因爲它不存在。

在您的不平等測試之前/之後設置一個斷點,並檢查您的變量是否是您期望的變量。還要檢查不平等是否成立。

+0

是的,你是正確的pax(我,j)是一個矩陣與零。所以這將永遠不會是真的! –