Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 06.12.2013
Сообщений: 30
1

Не закрывать(уничтожать) объект после завершения функции

15.03.2016, 03:19. Показов 1306. Ответов 2

Author24 — интернет-сервис помощи студентам
Использую GUIDE и пишу функцию обработчик. При этом созданные мною переменные не видны в workspace-е. А также созданные мною фигуры закрываются после окончания работы функции.
Как можно исправить проблему с закрыванием, и сделать все переменные видимыми и между функциями
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
    seples=30000;
    fs=14000;
    recObj = audiorecorder(fs,16,1,1); 
% IM USING handles JUST BECOUSE
      handles.mic=dsp.AudioRecorder;
      handles.mic.SampleRate=14000;
      handles.mic.NumChannels=1;
      %---------------
      handles.Fs=dsp.SpectrumAnalyzer; % THIS IS CLOSING
      handles.Fs.TimeSpan=300000;
      %--------------
      handles.myt=dsp.TimeScope;    % THIS IS CLOSING
      handles.myt.BufferLength=20*14000;
      handles.myt.ShowGrid=true;
      handles.myt.TimeSpan=30000;
      handles.myt.YLimits=[-0.5 0.5];
      %-------------
      tic;
      whole=[]
      while toc<5
          in=step(handles.mic);
          whole=[whole,in'];
          step(handles.Fs,in); % HERE I USE THIS OBJECTS AND SEE THE ANIMATION
          step(handles.myt,in);
      end
      %figure(Fs);
      release(handles.mic);
      release(handles.Fs);
      release(handles.myt);
      %tic=0:1/fs:24-1/fs;
      plot(in); % THIS IS NOT CLOSING
Добавлено через 7 часов 39 минут
Тот же самый код оформленный как простая функция.(проблемы все те же)
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function whole=startRecord()
 
seples=30000;
fs=14000;
recObj = audiorecorder(fs,16,1,1); 
mic=dsp.AudioRecorder;
mic.SampleRate=14000;
mic.NumChannels=1;
%---------------
Fs=dsp.SpectrumAnalyzer;
Fs.TimeSpan=300000;
%--------------
myt=dsp.TimeScope;
myt.BufferLength=20*14000;
myt.ShowGrid=true;
myt.TimeSpan=30000;
myt.YLimits=[-0.5 0.5];
%-------------
tic;
whole=[]
while toc<15
    disp(toc)
    in=step(mic);
    whole=[whole,in'];
    step(Fs,in);
    step(myt,in);
end
 
release(mic);
release(Fs);
release(myt);
MYtic=0:1/fs:24-1/fs;
disp('your message');
plot(in);
end
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2016, 03:19
Ответы с готовыми решениями:

Оставлять объект в памяти в открытой книге Excel после завершения всех макросов
Создал пользовательский класс для объекта, в который я считываю исходные данные. Процесс их...

Запуск функции после завершения предыдущей
Знаю что такие темы уже были и гугл не помог ( Есть две функции посимвольного вывода текста ...

Вызов функции после завершения потока
Доброго времени суток. Хотел узнать как можно сделать, что бы в потоке, который обрабатывает...

Запуск функции после завершения предыдущей
Подскажите, как можно реализовать в таком алгоритме запуск функции после завершения предыдущей?...

2
Эксперт по математике/физике
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
15.03.2016, 07:34 2
Лучший ответ Сообщение было отмечено shinarthas как решение

Решение

Не понятно что Вы хотите сохранить, допустим in.
Тогда используйте для хранения в строках после 35
Matlab M
1
2
handles.in=in;
guidata(hObject, handles);
А в функции-обработчике перед использованием
Matlab M
1
2
3
4
5
if isfield(handles,'in') 
    in=handles.in;
else  % данных нет
    return; 
end
Или используйте другой подход, хранение данных в глобальных переменных (global)
1
0 / 0 / 0
Регистрация: 06.12.2013
Сообщений: 30
15.03.2016, 15:24  [ТС] 3
Цитата Сообщение от SSC Посмотреть сообщение
guidata(hObject, handles);
Именно это и хотел.
0
15.03.2016, 15:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2016, 15:24
Помогаю со студенческими работами здесь

Не меняет адресс массива после завершения функции
Добрый день. Есть ф-ция которая добавляет дополнительный элемент в динамический одномерный массив....

Что происходит с переменной после завершения функции ?
Здравствуйте, Подскажите пожалуйста: int main { My_func();

Запуск jQuery Функции повторно после ее завершения
Есть функция Online() Которая в себе содержит Ajax запрос на сервер. И запускает себя повторно,...

После завершения функции заданное в ней значение переменной обнуляется
После завершения функции заданное в ней значение переменной обнуляется. Возможно ли решить данную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru