如何使用"strcat"修复"saveas"代码以保存包含simulink仿真结果的pdf文件?



我在以下代码中挣扎。我不明白为什么"saveas"功能不起作用,尽管我给出了正确的文件名、文件类型和 Simulink 模型的图形仿真结果图。我是否需要更改"strcat"代码中的某些内容?我也希望有人在这个问题上帮助我。

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');

导致的错误:

  • 使用检查ArgsForHandleToPrint Handle输入时出错,输入必须是标量、>向量或向量的单元格数组。 检查ArgsForHandleToPrint>时出错 print>LocalCreatePrintJob (第 100 行(句柄 => checkArgsForHandleToPrint(0, varargin{:}(; 打印错误(第 38 行(> [pj, inputargs] = LocalCreatePrintJob(varargin{:}(;保存>中的错误(第 181 行(> 打印( h, name, ['-d' dev{i}] ( GUI中的错误>nightly_simulation_Callback(第909行(>saveas(hFig,名称,'pdf'(;错误在gui_mainfcn(第 95 行(> feval(varargin{:}(; GUI 中的错误(第 43 行(> gui_mainfcn(gui_State, varargin{:}(;

中的错误 matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata(GUI('nightly_simulation_Callback',hObject,eventdata,guidata(hObject((> 评估已销毁对象回调时出错。


你有多个Scope块,因此 hFig 是一个向量,这就是saveas抱怨的。

您需要有一个循环,并将每个图形/范围保存到不同的文件中。 所以像

hFig = findall(0,'tag','SIMULINK_SIMSCOPE_FIGURE');
for idx = 1:numel(hFig)
name = strcat('NCSSimResults','_Scope_',num2str(idx));
saveas(hFig(idx), name, 'pdf');
end

或者更好的是获取各个Scope块的名称,并将其用作每个文件的名称。

最新更新