Reputation: 27
I am struggled with the following code. I don't understand why the 'saveas' function doesn't work although I gave proper file name, file type and the figure of graphical simulation results of a Simulink model. Do I need to change something in 'strcat' code or? Also I hope that someone helps me in this issue.
function nightly_simulation_Callback(hObject, eventdata, handles)
open_system('SimulinkModel.slx');
sim('SimulinkModel.slx');
hFig = findall(0,'tag','SIMULINK_SIMSCOPE_FIGURE');
name = strcat('NCSSimResults','_',num2str(1));
saveas(hFig, name, 'pdf');
Resulted errors:
Error using checkArgsForHandleToPrint Handle input must be scalar, > vector, or cell array of vectors. Error in checkArgsForHandleToPrint > Error in print>LocalCreatePrintJob (line 100) handles = > checkArgsForHandleToPrint(0, varargin{:}); Error in print (line 38) > [pj, inputargs] = LocalCreatePrintJob(varargin{:}); Error in saveas > (line 181) > print( h, name, ['-d' dev{i}] ) Error in GUI>nightly_simulation_Callback (line 909) > saveas(hFig, name, 'pdf'); Error in gui_mainfcn (line 95) > feval(varargin{:}); Error in GUI (line 43) > gui_mainfcn(gui_State, varargin{:});
Error in matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)GUI('nightly_simulation_Callback',hObject,eventdata,guidata(hObject)) > Error while evaluating DestroyedObject Callback.
Upvotes: 0
Views: 211
Reputation: 10772
You have multiple Scope
blocks and hence hFig is a vector, which is what saveas
is complaining about.
You need to have a loop, and save each figure/scope to a different file. So something like
hFig = findall(0,'tag','SIMULINK_SIMSCOPE_FIGURE');
for idx = 1:numel(hFig)
name = strcat('NCSSimResults','_Scope_',num2str(idx));
saveas(hFig(idx), name, 'pdf');
end
Or perhaps even better would be to get the name of the individual Scope
blocks and use those as the name of each of the files.
Upvotes: 0