我是一个超级初学者在Simulink模型和控制系统。我建立了无人机动力学系统的.slx Simulink模型。它接受两个输入(滚动cmd,俯仰cmd),并输出速度x,速度y,位置x和位置y。
从这里开始,我似乎可以通过调用
open_system('myModel.slx', 'loadable');

但是,如何输入并获得输出值呢?有什么办法能让我在里做到这一点吗?
编辑:这是我的模型的完整布局:

当我做的时候
roll_CMD=10;
pitch_CMD=20;我收到警告说:
Input port 1 of 'SimpleDroneDynamics/...' is not connected.有个错误说
Number of left-hand side argument doesn't match block diagram...EDIT2:我在用Matlab2017a
发布于 2017-06-07 11:31:50

sim函数运行您的模拟:
sim(Name_of_model)
如果模型不在active MATLAB文件夹中,name_of_model必须包含路径(在主菜单下的matlab窗口中可以看到活动文件夹)。
sim函数有不同的属性,请阅读它们的帮助--这对您很有用。顺便说一句:您可以使用sim更改模型的一些参数。您甚至可以在模型中找到任何块并更改它的属性。阅读更多sim和关于找出电流块的内容。有趣的是,最后一个解决方案使您能够在模拟期间更改参数!tout变量。它是一系列的时间步骤。但是,如果添加输出端口块 (如在我的图像中),也会在工作区yout中获得另一个变量。yout是一个数据集。它包含所有的输出值。例如,对于2个外部端口:
yout = Simulink.SimulationData.Dataset包: Simulink.SimulationData特性:名称:' yout‘总元素:2个元素:1:’2:‘
获取任何一个输出端口的值:
yout.get(1).Values
它是一个timeseries数据类型,因此:
yout.get(1).Values.Time -给你时间
yout.get(2).Values.Data -每次都给出这个输出端口的值t-时间数组,所有输出值的y -矩阵(它已经加倍,只包含没有时间的值,但对于每个模拟时间!)发布于 2017-06-07 11:02:59
关于你问题的前两点:
simulink中的:


MATLAB脚本
clc;
clear all;
roll = 10;
pitch = 20;
sim('/path_to_simulinkmodel.slx')
time = simout(:,1);
velocity_X = simout(:,2);
velocity_Y = simout(:,3);
position_X = simout(:,4);
position_Y = simout(:,5);关于你问题的第三点
可以在方框图编辑器中定义模拟的持续时间。您可以在调用脚本中放置一个定义的变量。有多种实现时间相关输入变量的方法:
https://stackoverflow.com/questions/44407531
复制相似问题