Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用block-Simulink参数中输入端口的值_C++_Matlab_Simulink_State Space - Fatal编程技术网

C++ 使用block-Simulink参数中输入端口的值

C++ 使用block-Simulink参数中输入端口的值,c++,matlab,simulink,state-space,C++,Matlab,Simulink,State Space,我有一个simulink模型,我计划将其转换为C代码并在其他地方使用。为了在simulink模型中设置变量,我定义了“输入端口” 我试图找到一种方法,将输入变量用作状态空间块的一部分,但我已经尝试了所有方法,但不确定如何进行 如前所述,这将转换为C/C++代码,因此无论如何都没有使用matlab的选项 假设我在状态空间块参数中使用矩阵A。矩阵A定义为liek,因此A=[Input1 0;Input2 0;0 Input3] 我希望能够通过设置Input1 2 3等的值来通过代码更改输入值。生成代

我有一个simulink模型,我计划将其转换为C代码并在其他地方使用。为了在simulink模型中设置变量,我定义了“输入端口”

我试图找到一种方法,将输入变量用作状态空间块的一部分,但我已经尝试了所有方法,但不确定如何进行

如前所述,这将转换为C/C++代码,因此无论如何都没有使用matlab的选项

假设我在状态空间块参数中使用矩阵A。矩阵A定义为liek,因此A=[Input1 0;Input2 0;0 Input3]


我希望能够通过设置Input1 2 3等的值来通过代码更改输入值。

生成代码后,您不能调整参数,因为它与常量值内联,这通常是因为它会生成最快的代码。要完全控制行为,您必须使用。有一个具有不同代码版本的表,您可以根据需要选择正确的参数类型


在许多情况下,另一种惰性的实现方法是使用基本工作空间变量,实现起来非常简单,在大多数情况下效果很好。

在Simulink中,参数和信号之间有非常明显的区别。参数是输入到对话框中的东西,而信号是输入或输出到块中的东西

状态空间块中的矩阵被定义为参数,因此您将永远无法向其中输入信号

你有两个选择

  • 不要使用状态空间块。而是使用更基本的块(即积分器、求和和和积块)自己开发状态空间模型。这对于小型模型是可行的,但实际上并不推荐


  • 请注意,块的参数通常是可调的。生成代码时,其中一个文件将是
    model\u name\u data.c
    ,它将包含一个参数结构,允许您更改参数


  • 请注意,在任何一种情况下,仅从模型设计的角度来看,都将由您来确保对模型的更改是合理的(例如,不要使任何循环等变得不稳定)。

    请向我们展示您尝试了什么以及您得到了什么错误消息。@Daniel我尝试过使用inports,但它们在参数块中无法引用。我也尝试过在模型工作区中创建参数,但它们不会出现在代码生成中。所以您有一个工作正常但不支持代码生成的模型?请分享一个最简单的例子,这个模型符合你的要求。描述生成代码后不再工作的内容。问题是它根本不起作用,或者您不能修改参数。@Daniel一切正常,但我无法更改值“请注意,块的参数通常是可调的。”当变量是模型工作区的一部分时,也是这样吗?我认为只有在基本工作区的变量部分默认情况下才可调。你说得对,模型工作区变量通常不可调,但是(在某些情况下)仍然会生成一个Model_name_data.c文件。谢谢!最后我自己建立了状态空间模型,因为它不是一个很大的模型。