主要内容

从信号生成器块信号编辑块

信号生成器块和signalbuilder函数不推荐。考虑更换信号生成器块的信号编辑器块。有关更多信息,请参见用信号编辑块代替信号生成器块

编程访问信号编辑器块,用get_paramset_param功能。有关更多信息,请参见取代signalbuilder编程使用

用信号编辑块代替信号生成器块

信号编辑器提供了类似的功能信号生成器块,但更大的灵活性。取代信号生成器信号编辑器块。的好处信号编辑器块包括:

  • 信号数据存储在一个MAT-file外的模型

  • 信号编辑和创建

  • 金宝app支持仿真软件金宝app®信号属性,比如尺寸和复杂性

  • 金宝app对标准模型的数据类型的支持,包括总线和定点金宝app

  • 独特的输出信号电平数据类型

  • 多个率输出

  • 金宝app对仿真软件的支持单位金宝app

  • 讨论二阶导数过零检测和数据插值独特信号

端口信号数据和属性信号生成器块的信号编辑器块,用signalBuilderToSignalEditor函数。为当前的模型中,这个函数存储MAT-file信号数据和从现有的属性信号生成器块,增加了一个信号编辑器阻止当前模型,并修改信号编辑器块引用新的MAT-file。

例如,看到的用信号编辑块代替信号生成器块

注意事项

当你转换的信号生成器块的信号编辑器块,考虑这些因素:

  • 内部存储格式和预处理的数据之间的不同信号生成器信号编辑器块。使用变量一步解决时,不同的模拟时间步长和不匹配的输出发生在两个街区。两块的输出之间的差异降到最低,您可以:

    • 减少的价值马克斯步长变量的步骤解决。

    • 插入更多的数据点的输入信号信号编辑器块更好地代表其形状。

    • 使用固定步解算器或一组样本时间两块相同的离散采样时间(大于0)。对离散采样时间的更多信息,见离散采样时间

  • 信号生成器块仅支持双打金宝app。改变数据类型或其他信号属性转换后,单击按钮信号编辑器阻止访问信号编辑器的用户界面。

取代编程使用signalbuilder

信号生成器块和signalbuilder函数不推荐。后替换信号生成器块的信号编辑器块,您可以通过编程方式与块使用get_paramset_param功能。这些表列出signalbuilder函数及其等效的功能get_param,set_param,支持代码。金宝app

用场景替换组使用

行动 程序化的等价物

得到场景(集团)的名字。

信号生成器

[~,~,~,groupname] = signalbuilder (hBlk);

信号编辑器

groupname = get_param (hBlk options@ActiveScenario);

得到的场景(集团)。

信号生成器

[~,~,~,groupname] = signalbuilder (hBlk);numGroups =长度(groupname);

信号编辑器

numGroups = str2double (get_param (hBlk NumberofScenarios));

得到积极的场景(集团)。

信号生成器

[idx、名称]= signalbuilder (hBlk activegroup);

信号编辑器

name = get_param (hBlk ActiveScenario) groupname = get_param (hBlk“options@ActiveScenario”);idx =找到(strcmp (groupname、名称));

通过索引设置活动场景(集团)。

信号生成器

signalbuilder (hBlk activegroup, 2);

信号编辑器

set_param (hBlk ActiveScenario ", 2)

设置活动场景(集团)的名字。

信号生成器

N /一个

信号编辑器

set_param (hBlk“ActiveScenario”、“Hard_braking”)

访问信号信号编辑器信号生成器

行动 程序化的等价物

得到信号的名字。

信号生成器

[signalNames, ~, ~ ~] = signalbuilder (hBlk);

信号编辑器

signalNames = get_param (hBlk options@ActiveSignal);

得到积极的信号数量的场景(集团)。

信号生成器

[signalNames, ~, ~ ~] = signalbuilder (hBlk);numSignals =长度(signalNames);

信号编辑器

numSignals = get_param (hBlk NumberofSignals);

得到积极的信号。

信号生成器

N /一个

信号编辑器

name = get_param (hBlk“ActiveSignal”)

通过索引设置积极信号。

信号生成器

N /一个

信号编辑器

set_param (hBlk ActiveSignal ", 2)

组积极信号的名字。

信号生成器

N /一个

信号编辑器

set_param (hBlk“ActiveSignal”、“节流”)

创建信号编辑器在模型

行动 程序化的等价物

块添加到模型中。

信号生成器

%给定数组时间和数据hBlk = signalbuilder (gcs,“/信号生成器”,“创建”,…时间、数据);

信号编辑器

% Simuli金宝appnk.SimulationData。数据集,ds文件名=“scenarioMatFile.mat”;保存(文件名,ds);hBlk = add_block(模金宝app型/资源/信号编辑器,……[gcs, ' /信号编辑'],‘MakeNameUnique’,‘上’,……“文件名”,文件名);

访问时间和数据信号编辑器

因为信号编辑器存储数据块的MAT-file外部模型,编程等价物并不直接比信号生成器为获取和设置时间和数据块。在这些情况下,您必须获得的时间和数据信号生成器格式使用下面这样的代码:

%得到MAT-file名称、数量的组和组名。文件名= get_param (hBlk,“文件名”);numGroups = str2double (get_param (hBlk NumberofScenarios));groupname = get_param (hBlk options@ActiveScenario);%从MAT-file加载组。负载(文件名);时间= {};数据= {};%得到时间和数据组。id = 1: numGroups ds = eval (groupname {id}); timeThisScenario = {}; dataThisScenario = {}; for elementId = 1:ds.numElements % Timeseries in Simulink.SimulationData.Dataset, ds timeThisScenario{end+1} = ds{elementId}.Time'; dataThisScenario{end+1} = ds{elementId}.Data'; end % Put time and data into Signal Builder format. time(1:length(timeThisScenario),id) = timeThisScenario; data(1:length(dataThisScenario),id) = dataThisScenario; end
行动 程序化的等价物

得到的时间和数据信号生成器格式。

信号生成器

(时间、数据)= signalbuilder (hBlk);

信号编辑器

使用代码信号编辑器中访问时间和数据块获得时间和数据然后 所需的信号转换信号生成器 时间和数据格式。

得到最后一次数据。

信号生成器

时间= signalbuilder (hBlk);endTime时间={1}(结束);

信号编辑器

使用的代码信号编辑器中访问时间和数据块的时间和数据信号生成器格式,然后找到所有时间值的最大时间值。

获得时间和数据为特定的信号。

信号生成器

(时间、数据)= signalbuilder (hBlk‘得到’,signalNames {sigId}, groupname)

信号编辑器

使用的代码信号编辑器中访问时间和数据块让时间和数据,然后将需要的信号信号生成器时间和数据格式。

设置时间和数据为所有信号和空(删除)组。都返回错误。

信号生成器

signalbuilder (hBlk‘设置’,1:1:numSignals, 1:1: numGroups, []);

信号编辑器

文件名= get_param (hBlk,“文件名”);ds = 金宝appSimulink.SimulationData.Dataset;保存(文件名,ds);

设置时间和数据空(删除)为特定的信号和组。

信号生成器

signalbuilder (hBlk,“集”,[1、2],1,[],[])

信号编辑器

使用的代码信号编辑器中访问时间和数据块让时间和数据,然后设置所需的信号与更新的时间和数据并保存MAT-file append模式。

附加的场景和组

行动 程序化的等价物

添加场景(集团)。

信号生成器附加

时间= {timeNew1 timeNew1;timeNew2 timeNew2};data = {dataNew1 dataNew1;dataNew2 dataNew2};[signalNames, ~, ~ ~] = signalbuilder (hBlk);signalbuilder (hBlk、“附加”、时间、数据signalNames, groupname);

信号生成器附加组

时间= {timeNew1 timeNew1;timeNew2 timeNew2};data = {dataNew1 dataNew1;dataNew2 dataNew2}; [signalNames, ~, ~ ~] = signalbuilder (hBlk);signalbuilder (hBlk appendgroup”、时间数据,signalNames, groupName);

信号编辑器

%的时间和数据格式转换为信号。newSignal (1) = timeseries (dataNew1 ', timeNew1 ');newSignal (2) = timeseries (dataNew2 ', timeNew2 ');% MAT-file名字。文件名= get_param (hBlk,“文件名”);%从MAT-file加载组。负载(文件名);%(集团)添加新的场景。numGroups =长度(groupname);numSignals = str2double (get_param (hBlk NumberofSignals)); signalNames = get_param(hBlk,"options@ActiveSignal"); for id = 1:numGroups % create new dataset ds(id) = Simulink.SimulationData.Dataset; for idSig = 1:numSignals element = Simulink.SimulationData.Signal; element.Name = signalNames{idSig}; element.Values = newSignal(idSig); ds(id) = addElement(ds(id),element); end assignin('caller', groupNames{id}, ds(id)); % Save MAT-file using append mode. save(fileName, groupNames{id}, '-append'); end

附加的信号

行动 程序化的等价物

将信号添加到所有场景(集团)。

信号生成器

时间= {timeNew1 timeNew1;timeNew2 timeNew2};data = {dataNew1 dataNew1;dataNew2 dataNew2};signalNames = {‘signalNew1’,‘signalNew2};signalbuilder (hBlk appendsignal”、时间数据,signalNames);

信号编辑器

%的时间和数据格式转换为信号。newSignal (1) = timeseries (dataNew1 ', timeNew1 ');newSignal (2) = timeseries (dataNew2 ', timeNew2 ');% MAT-file名字。文件名= get_param (hBlk,“文件名”);%从MAT-file加载组。负载(文件名);%使用独特的信号名称。signalNames = {‘signalNew1’,‘signalNew2};%附加信号场景(集团)。 numGroups = length(groupNames); numSignals = length(signalNames); for id = 1:numGroups % Get dataset. ds = eval(groupNames{id}); for idSig = 1:numSignals element = Simulink.SimulationData.Signal; element.Name = signalNames{idSig}; element.Values = newSignal(idSig); ds = addElement(ds,element); end assignin('caller', groupNames{id}, ds); % Save MAT-file using append mode. save(fileName, groupNames{id}, '-append'); end

打印

行动 程序化的等价物

打印处理图形®图。

信号生成器

hFig = signalbuilder (hBlk,“打印”,配置,“图”);

信号编辑器

使用的代码信号编辑器中访问时间和数据块从数据集得到的信号,然后剧情所需的数据。

另请参阅

|||