2012-02-22 250 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