主要内容

比较MATLAB®函数块中Sum块和Sum的数值响应

这个例子展示了如何生成模拟输入,并使用它们在整个操作范围内练习模型。在本例中,生成测试数据以模拟模型并比较Sum块的数值响应,以及在MATLAB®Function块中实现的Sumex_testsum模型。

打开模型。

模型=“ex_testsum”;open_system(模型);set_param(模型,“SimulationCommand”“更新”);

指定数据属性并生成数据

使用固定的。DataSpecification对象来指定输入数据属性。在本例中,创建两个DataSpecification对象,一个使用双精度数据类型,另一个使用单精度数据类型。第一个对象生成的值的间隔为1 ~ 64,第二个对象生成的值的间隔为1 ~ 32。

Dataspec1 = fixed。DataSpecification (“双”“间隔”, {1 64});Dataspec2 = fixed。DataSpecification (“单一”“间隔”, {1 32});

DataGenerator对象生成数值丰富的值的组合。若要在Simulink®模型中使用输出数据,请将输出的格金宝app式设置为“timeseries”

datagen = fixed.DataGenerator;datagen。dataspecspecifications = {dataspec1, dataspec2};[tsdata1, tsdata2] = outputAllData(datagen, tsdata2)“timeseries”);

建立模型并进行模拟

属性的属性DataSpecification对象到模型中的import块中。

applyOnRootInport (datagen。DataSpecifications{1}, model, 1); applyOnRootInport(datagen.DataSpecifications{2}, model, 2);

将生成的时间序列数据加载到模型中并进行模拟。

set_param(模型,“LoadExternalInput”“上”...“ExternalInput”“tsdata1, tsdata2”...“StopTime”字符串(tsdata1.Time(结束)));Simout = sim(模型);

可视化输出

可视化模拟的输出,并比较求和操作的两个实现的数值行为。

为每组数据获取生成数据中的唯一值。[x, y] = datagen.getUniqueValues;d = abs(simout.yout{1}. values . abs)。Data - simout.yout{2}.Values.Data);X =重塑(tsdata1。数据,数字(x), []);Y =重塑(tsdata2。数据,数字(x), []);D =重塑(D,数字(x), []);图;绘制输出之间的差值作为输入值的函数。冲浪(X, Y, D,“EdgeColor”“没有”);网格;视图(2);轴;包含(“三机”);ylabel (“In2”);colorbar;标题(abs(MATLAB函数块输出-求和块输出));

从图中可以看出,两种实现之间的差异随着数字输入值的增大而增大。这种差异是由于两种实现中累加器的数据类型不同。

数值响应与单精度蓄能器的比较

蓄电池数据类型参数设置为继承:通过内部规则继承.在本例中,累加器使用的数据类型是双精度浮点类型。设置累加器数据类型并再次比较输出。

set_param([模型,/笔的),“AccumDataTypeStr”“单一”) simout = sim(模型);

可视化输出。当Sum块的累加器类型设置为,实现在所有值处返回相同的结果。

[x, y] = datagen.getUniqueValues;d = abs(simout.yout{1}. values . abs)。Data - simout.yout{2}.Values.Data);X =重塑(tsdata1。数据,数字(x), []);Y =重塑(tsdata2。数据,数字(x), []);D =重塑(D,数字(x), []);图;冲浪(X, Y, D,“EdgeColor”“没有”);网格;视图(2);轴;包含(“三机”);ylabel (“In2”);colorbar;标题(abs(MATLAB函数块输出-求和块输出));