Отображение переменных в рабочем пространстве MATLAB при использовании цикла WHILE - PullRequest
1 голос
/ 22 февраля 2012

Я написал скрипт, в котором он извлекает данные из базы данных, и я дал пользователю возможность, захотят ли они искать снова.@Andrey помог мне решить проблему , когда пользователь ответил на вопрос «Да» или «Нет».

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 Ответ

2 голосов
/ 22 февраля 2012

Браузер рабочей области показывает существующие переменные после ввода «Нет», потому что это когда цикл while заканчивается.Если во время выполнения скрипта, функции или, как в вашем случае, цикла, браузер обновляется, это будет слишком дорого.Под дорогим я имею в виду интенсивную загрузку процессора: как если бы вы использовали fprintf () в цикле ...

Если вы хотите поиграть с промежуточными значениями, установите точку останова.в

res = input('Would you like to search for another pdb?', 's');

, и когда цикл покажется там, вы увидите обновленный браузер рабочей области.Я не знаю, поможет ли это вам.

Если вы хотите иметь возможность просматривать предыдущие варианты после ввода «Нет», то используйте массив ячеек для сохранения результатов прошлого поиска:

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;

end

...