qq_45603563 2023-02-26 18:49 采纳率: 90%
浏览 97
已结题

matlab simulink m文件与simulink交互

在matlab的m文件中得到的f=spapi(5,t,y)函数,将其作为simulink中的输入信号,为什么显示下面的错误?

'untitled/From Workspace' 中,指定为 workspace 输入的结构体格式变量无效。如果输入信号是总线信号,变量必须为 MATLAB 时间序列对象的结构体。否则,变量必须包括 '时间' 和 '信号' 字段,并且 '信号' 字段必须为具有 '值' 字段的结构体。

simulink的仿真模型如图所示。

img

  • 写回答

3条回答 默认 最新

  • MarkHan_ 2023-02-26 19:43
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    这是因为在 Simulink 中使用 From Workspace 模块导入 MATLAB 的变量时,该变量必须具有特定的格式才能被正确地读取。

    如果您在 MATLAB 中生成了一个 f 函数,并且想将其用作 Simulink 模型中的输入信号,可以按照以下步骤操作:

    1.将 f 函数的输入和输出保存为两个变量,例如:

    t = [0:0.1:1];
    y = sin(t);
    f = spapi(5,t,y);
    
    
    
    1. 将输入变量 t 和输出变量 y 组合成一个结构体,例如:
    data.time = t';
    data.signals.values = y';
    data.signals.dimensions = 1;
    
    
    

    3.将结构体 data 保存到工作区中,例如:

    assignin('base', 'mydata', data);
    
    
    

    4.在 Simulink 模型中使用 From Workspace 模块来读取 mydata 变量,确保在 From Workspace 的参数设置中,数据格式为“Structure with time”:Simulink From Workspace设置
    这样,您的 f 函数就可以作为输入信号在 Simulink 模型中使用了。

    需要注意的是,如果您的输入信号是一个数组,那么需要使用 timeseries 函数将其转换为 MATLAB 时间序列对象,然后再将其保存为结构体,并在 Simulink 模型中设置数据格式为“Bus”(总线信号)。例如:

    t = [0:0.1:1];
    y = [sin(t); cos(t)];
    f = [t; y];
    mytimeseries = timeseries(f(2:end,:), f(1,:));
    mybus = Simulink.Bus.createObject(mytimeseries);
    data.signals.values = f(2:end,:);
    data.signals.dimensions = 2;
    data.time = f(1,:)';
    assignin('base', 'mydata', data);
    
    
    
    

    这里将 f 定义为一个大小为 3x11 的数组,第一行为时间向量,第二行和第三行分别为两个信号的值。首先使用 timeseries 函数将其转换为时间序列对象,并使用 Simulink.Bus.createObject 函数将其转换为一个总线对象。然后将信号和时间向量组合成结构体 data,并将其保存到工作区中。最后在 Simulink 模型中使用 From Workspace 模块读取 mydata 变量,并在参数设置中将数据格式设置为“Bus”。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月27日
  • 创建了问题 2月26日

悬赏问题

  • ¥15 写一个bat,根据文件前缀创建文件夹,并将文件移动到对应前缀名称的文件夹内
  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内