Save plot every second in different file image

Please Help me.
I have the program of monitoring signal which I use plot function to view the signal. Because I use the timer function, the plot changed every second. What I want is I can save that plot for every second, let say for 10 seconds. What will I to do so the plots are saved in a file with different named? say file 1.tiff for signal 1, file 2.tiff for signal 2, and so on.

 Accepted Answer

Hi,
in the function which is called from the timer (TimerFcn callback) before updating the plot you can save it. Lets say the TimerFcn is named
timer('TimerFcn',@my_func, 'Period', 1.0);
Than you create my_func as follows
function my_func(obj,event )
This will pass the timer object to my_func in every call. The timer object has a property called 'TasksExecuted'. With this property you can create dynamic file names easily as follows:
%before updating the plot
print(handle_to_plot,'-dtiff',['signal_',num2str(get(obj,'TasksExecuted'))]);
%update plot
More specific:
t = timer('TimerFcn',@my_func, 'Period', 1.0,'ExecutionMode','fixedRate');
start(t);
function my_func(obj,event )
get(obj,'TasksExecuted')
end

10 Comments

I've tried your codes, but the result is this
Error using ==> coba>mytimer
Too many input arguments.
the figure's name is coba
and the timer's name is mytimer
Could you post your code? The example given above works fine. Try to take the main idea and put it in your code.
function timer_Callback(hObject, eventdata, handles)
T1=timer;
T2=timer;
set(T1,'ExecutionMode','fixedRate','BusyMode','drop','Period',1);
set(T2,'ExecutionMode','fixedRate','BusyMode','drop','Period',1);
set(T1, 'TimerFcn', @(obj, event) timerkirim(obj, event, handles));
set(T2, 'TimerFcn', @(obj, event) mytimer(obj, event, handles));
setappdata(0,'T1',T1);
setappdata(0,'T2',T2);
start(T1);
start(T2);
function mytimer(obj, event)
print(handles.axes1,'-dtiff',['signal_',num2str(get(obj,'TasksExecuted'))]);
the timerkirim is timer to update the plot
Your TimerFcn passed 3input args
set(T1, 'TimerFcn', @(obj, event) timerkirim(obj, event, handles));
But the mytimer function has only two. This would match with the error you get: Too many input arguments.
Try it that way:
set(T2, 'TimerFcn', {@mytimer,handles});
function mytimer(obj, event, handles)
print(handles.axes1,'-dtiff',['signal_',num2str(get(obj,'TasksExecuted'))]);
Look here for the right callback function syntax:
http://www.mathworks.com/help/releases/R2011a/techdoc/matlab_prog/f9-39541.html#f9-42494
Did you try ma suggestions? This wont work
set(T1, 'TimerFcn', @(obj, event) timerkirim(obj, event, handles));
set(T2, 'TimerFcn', @(obj, event) mytimer(obj, event, handles));
For T2 it have to look like this
set(T2, 'TimerFcn', {@mytimer,handles});
and the mytimer function must look like this
function mytimer(obj, event, handles)
print(handles.axes1,'-dtiff',['signal_',num2str(get(obj,'TasksExecuted'))]);
Still got error:
Error using ==> print at 310
Handle Graphics handle must be a Figure.
handles.axes1 is an axis handle. but print need the handle of the figure.
It worked if I write this code:
print(coba,'-dtiff',['signal_',num2str(get(obj,'TasksExecuted'))]);
At first moment there is some crush maybe because the program locating the destination image file but after a while it work with some vibration.
But it fine for me.
Thank you very much Mr.Friedrich..

Sign in to comment.

More Answers (0)

Categories

Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!