matlab gui怎么使用导入的数据库,如何将Simulink块中的数据导入MATLAB GUI?

Non-real-time solution:

如果要在GUI中设置参数,使用这些参数模拟模型,然后在GUI中显示模拟输出,那么blinkdagger.com上有一个很好的教程 . 他们描述的一种解决方案是使用SIMSET函数来定义Simulink模型与之交互的工作空间 . 您应该能够supersede the base workspace,以便将数据发送到调用Simulink模型的GUI函数的工作空间 .

Real-time solution

根据MikeT的建议,您可以使用RuntimeObject . 首先必须使用get_param函数从块中获取RuntimeObject:

rto = get_param(obj,'RuntimeObject');

其中 obj 是块路径名或块对象句柄 . 您可以使用GCB函数获取最近选择的块的路径名(在这种情况下,您可以将 obj 替换为 gcb ) . 然后,您可以使用以下内容获取块的输出:

blockData = rto.OutputPort(1).Data

文档中的另一个警告:

要确保“数据”字段包含正确的块输出,请在“配置参数”对话框的“优化”窗格中关闭“信号存储重用”选项(请参阅信号存储重用) .

您可能最终会在GUI中运行循环或计时器例程,只要模拟正在运行,就会连续从RuntimeObject获取输出数据 . 文件还说明:

仅当包含块的模型正在运行或暂停时,才存在运行时对象 . 如果模型停止,get_param将返回一个空句柄 . 停止或暂停模型时,运行时对象的所有现有句柄都将变为空 .

因此,您的循环或计时器例程必须首先检查RuntimeObject是否存在,并且要么停止(如果它不确定如何检查是否存在RuntimeObject,但我相信您要么检查对象是否为空或者如果对象的BlockHandle属性为空:

isempty(rto) % Check if the RuntimeObject is empty

%OR

isempty(rto.BlockHandle) % Check if the BlockHandle property is empty

你可能感兴趣的:(matlab,gui怎么使用导入的数据库)