2012-02-22 59 views
1

我編寫了一個腳本,它從數據庫中檢索數據,並且我已向用戶提供了是否要再次搜索的選項。 @Andrey幫助我修復了problem,用戶回答「是」或「否」。在使用WHILE循環時在MATLAB工作區中顯示變量

goAgain = true; 
while goAgain 
    pdbSearch = input('Enter your PDB Code: ', 's'); 
    curs = fetch(exec(conn, ['SELECT * FROM cath_2_wo_dup WHERE pdbcode = ' '''' pdbSearch ''''])); 
    fprintf('Results Successful! \n'); 
    results = curs.Data % prints the data out 

    % ---------------------- 
    % User option to search again 
    % ----------------------- 

    res = input('Would you like to search for another pdb?', 's'); 
    goAgain = isequal(upper(res),'YES'); 
end 

但是,我有另一個查詢,我想問。在將選項再次提供給用戶之前,我如何允許先將已檢索的數據顯示在工作區中?

儘管它在命令窗口中顯示結果,但我希望在再次搜索之前查看我在變量編輯器中查詢的結果。在命令窗口中輸入「否」後,它只在工作區中顯示變量。

請指教。

+1

您可以使用[assignin] (http://www.mathworks.de/help/techdoc/ref/assignin.html)將變量放入所需的工作區。一般來說,將變量轉儲到基礎工作區應該謹慎,因此它不會雜亂無章。 – Lucas 2012-02-22 14:20:37

+0

在第一個查詢完成後,它仍然不顯示我的變量。只有在我的問題中輸入'否'後,纔會出現在工作區中。 – Jeiman 2012-02-22 14:50:44

回答

2

由於當while循環結束時,工作區瀏覽器會在您輸入'No'後顯示現有變量。如果在執行一個腳本,函數或者在你的情況下循環,瀏覽器被更新,這將會太昂貴。和昂貴的我的意思是CPU密集型:就像如果你使用fprintf中()在環...

如果你想與中間值玩,然後在

res = input('Would you like to search for another pdb?', 's'); 
設置一個斷點

當while循環到達那裏時,您將看到工作區瀏覽器已更新。我不知道這是否有助於你。

如果你希望能夠在輸入後「否」,然後用一個單元陣列來存儲過去的搜索結果,瀏覽以前的選擇:

goAgain = true; 
pastResuls=struct(); 
reultsCounter=1; 
while goAgain 
    pdbSearch = input('Enter your PDB Code: ', 's'); 
    curs = fetch(exec(conn, ['SELECT * FROM cath_2_wo_dup WHERE pdbcode = ' '''' pdbSearch ''''])); 
    fprintf('Results Successful! \n'); 
    results = curs.Data % prints the data out 
    pastResuls(reultsCounter).results=results; 
    pastResuls(reultsCounter).pdbSearch=pdbSearch; 

    % ---------------------- 
    % User option to search again 
    % ----------------------- 

    res = input('Would you like to search for another pdb?', 's'); 
    goAgain = isequal(upper(res),'YES'); 
    reultsCounter=reultsCounter+1; 

+0

感謝您的幫助。 – Jeiman 2012-02-22 21:00:07