Есть ли команда остановить программу и сохранить данные?

Я работаю над экспериментом, в котором я говорю данные, а MatLab отображает данные в виде графика и сохраняет их в видеофайле.

На данный момент я использую функцию tic/toc и цикл while, чтобы контролировать продолжительность записи данных для эксперимента в Matlab. Однако иногда эксперимент заканчивается быстрее, чем я устанавливаю таймер. Так что мне приходится долго ждать, пока MatLab закончит запись данных, которые я все равно не собираюсь использовать.

Я ищу функцию или метод MatLab, который можно было бы использовать для остановки программы по команде и сохранения данных, которые она записала до сих пор.

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

Код, который у меня сейчас есть, выглядит примерно так:

tic;
while toc<90 % run loop until time is 90 secs
%Record data
%graph data
end
%save all data to a file

person user3712173    schedule 14.07.2014    source источник


Ответы (1)


Вы можете сохранять данные на каждой итерации, а затем прерывать программу посередине, используя

CTRL+С

Это может быть не самым эффективным, но если это возможно, это должно решить вашу проблему.

tic;
while toc<90 % run loop until time is 90 secs
   %Record data
   %graph data
   %save all data to a file
end

Другим методом будет проверка определенного нажатия клавиши в цикле, а затем сохранение всех данных.

tic;
while toc<90 % run loop until time is 90 secs
   %Record data
   %graph data
   %if user pressed Q
      %save all data to a file
      break
   %
end

Чтобы определить, была ли нажата клавиша:

key = get(gcf,'CurrentKey');
if(strcmp (key , 'return'))
    % Do something
end
person Andrey Rubshtein    schedule 14.07.2014
comment
Мне больше нравится второй способ. Какой синтаксис я могу использовать для оператора If? - person user3712173; 14.07.2014