如何设置基于输入/输出数据类型的块面具参数?

39视图(30天)
在MATLAB仿真软件的功能块,我想设置输出数据类型基于块的万博1manbetx面具参数值。然而,模型不允许,万博1manbetx当生成代码。有什么方法可以设置输出数据类型通过编写一个表达式的面具或DataTypeStr面具参数的参数值或以其他方法吗?

接受的答案

安迪·巴特利特
安迪·巴特利特 2021年9月3日
编辑:安迪·巴特利特 2021年9月3日
实现这一目标的一个方法是使用面具初始化代码创建一个相同类型的虚拟“价值持有人变量”对话框中指定的参数。然后通过虚拟“持有人变量值”作为参数到MATLAB函数块中。
例如,如果面具对话框参数指定数据类型“单”,然后创建dummyVarToCarryDesiredType =单(0)。注意所持有的价值这个哑变量不重要。我使用了值0作为一个例子,但它也一直在54.32。重要的是价值的类型,而不是它的价值。
另一个例子,如果面具对话框参数指定数据类型的fixdt(1、8、3),然后创建dummyVarToCarryDesiredType = fi(0, 1, 8日,3)。
一旦你得到内部的哑变量通过MATLAB功能块,你可以得到假的类型信息和执行所需的操作。我附上一个示例库块铸造操作。
在MATLAB函数块代码对于这个示例,优雅的印象语法使用。
函数y = fcn (u, dummyVarToCarryDesiredType)
y =投(u,“喜欢”,dummyVarToCarryDesiredType);
结束
打开面具编辑器在这个块看看其余的工作原理。
我写这个例子是多态numerictypes:双,单一的逻辑/布尔,int8,……uint64、所有定点类型和一半。
这种方法的关键是掩盖初始化代码。
numericTypeFromMask1 = fixed.extractNumericType (dtOut);
%不能直接通过numerictype
%作为一个MATLAB功能块的输入参数
%创建一个哑变量的类型
%为了通过它作为输入参数
%
如果ishalf (numericTypeFromMask1)
%陷阱一半精度浮点作为特殊情况
dummyVarToCarryDesiredType =一半(0);
showName = true;
其他的
temp1 = fi (0, numericTypeFromMask1);
temp2 = castFiToMATLAB (temp1);
dummyVarToCarryDesiredType = castIntToFi (temp2);
showName = ~ isfi (temp2);
结束
如果~ showName
numericTypeForMLFBParam = numericTypeFromMask1;
maskIconTypeStr = numericTypeFromMask1.tostringInternalFixdt;
其他的
numericTypeForMLFBParam = numericTypeFromMask1.tostringInternalSlName;
maskIconTypeStr = numericTypeForMLFBParam;
结束
这是一个截图处理所有MATLAB基础类型。
这是一个与定点和一半的屏幕截图。
这两个例子模型(使用释放R2021a)均附呈。
第一个例子模拟只有基础模型。万博1manbetx
第二个例子还需要定点设计师许可来模拟。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!