如何将 mat 文件导入 simulink?
我对.mat文件和Simulink有问题. 我需要从.mat文件输入数据到Simulink,而不是信号,我需要在块中输入变量.块"从文件"对我没有任何好处,因为它仅使用信号. 我有什么办法可以使用simulink回调,preloadfcn或initfcn? 还是还有其他方法可以做到? 解决方案 您可以使用Model Explorer指定MAT文件作为模型工作空间数据的输入.从"视图"菜单打开模型资源管理器,然后选择"模型工作区".您将看到选项,以指定在最右边窗格上获取数据的不同方法.在此选择垫子.您将能够在模型中参考此垫子文件中的变量.您可以通过
34 2024-04-22
编程技术问答社区
如何在 Simulink Scope 中以编程方式'打印成图'?
在simulink Scope内,可以选择Print to Figure.这将打开一个与原始范围相同内容的图.有没有办法以编程方式执行此操作? 另请参见 解决方案 有些取决于您想要/需要的方式. 如果您确实想使用与UI回调完全相同的代码,则需要调查如何在以下目录/软件包中使用回调函数: matlabroot \ toolbox \ shared \ spcuilib+matlabshared+scopes \ @unifiedScope 尤其是printToFigureCallback.m是通过回调调用的代码. (您可以在代码中放置一个断点,并使用调试器逐步浏览代码以查看其工作原理.) 看起来以下内容应该可以工作,但行之有效,因此您需要进行一些试用和错误调查才能使其起作用. % Get the name of the Scope of interest scopeName = get_param(gcb,'Name'); % Find the Sco
16 2024-04-22
编程技术问答社区
Simulink 中的逆向集成
是否可以通过将开始时间设置为t_end,t_start的结束时间并设置负时间步长(-DT)来执行向后集成?还是我宁愿尝试MATLAB中的实现?我需要一个固定步骤集成方案. 我需要使用Pontryagin原理的控制问题.例如,请参阅 解决方案 时间无法在Simulink中向后运行.您需要使用该变量向前运行的变量更改来得出/实现模型.
20 2024-04-22
编程技术问答社区
如何在 Simulink 中更改时间变量?
我有一些处理(Wheelset的移动). wheelset具有质量,它是可变的,并且在init.m文件中声明(例如M=1;) 现在,我希望在此过程中,将每2秒更改一次轮子.如何将质量的新值从simulink保存到m变量? 解决方案 对我来说,我找到了这个决定. 我使用了变量M存储对象质量.从simulink中,我刚刚在函数调用中调用m.例如: 但是在MATLAB Function中调用rho rho看起来像: 这种方法仅在M静态时起作用.现在,我想及时更改M.因此,首先,我决定可以制作M全球并更改它.我编写了一个函数,制作了一个功能块,该功能块正在计算新的M值并将其设置为全局M变量.但这无效.您不能同时使用Simulink中的一个全局变量. 所以我决定改变整个方法.由于M现在不是静态参数,因此我应该将M作为信号.所以现在看起来像: 在block Constant M中,从工作区(或某些init.m file)获取,然后simulink与M变量一
48 2024-04-22
编程技术问答社区
模拟 MATLAB 中的 s 函数
我收到消息 s功能中的错误'project1_simu/s功能':s-函数'chiu_sfcn'不存在 每当我运行包含s功能框图的simulink文件时.解决此问题的任何提示? 解决方案 您需要使用MEX编译S函数. 然后,MEX32输出文件需要在MATLAB路径上. 其他解决方案 对于S功能,您需要确保您的C,MATLAB或FORTRAN代码是Simulink期望的.我的猜测是您的代码存在,但不在Directory Simulink期望中. 右键单击Simulink项目中的S功能块 - >选择S-功能参数. 单击s功能名称旁边的编辑按钮. 它可能会告诉您找不到s功能源.然后,它将提示您浏览代码或打开编辑器. 如果您无法弄清楚此文件的位置,并且拥有代码,则最好的选择是从此对话框打开编辑器. 从那里粘贴代码并将其保存为" chiu_sfcn".您无需将文件扩展名或浏览到其他文件夹.它应该自动将其保存在正确的文件夹中. 其
26 2024-04-22
编程技术问答社区
将 c 文件转换为 simulink 模型
我有大量的.c文件,该文件由Simulink编码器自动化.分析这些文件以了解Simulink模型是一定耗时的,据我所知,没有将C代码转换为Simulink模型的反向工具. 因此,是否有可能使用任何解析器将自动生成的C文件转换为模型? 解决方案 有一些研究喜欢这个区域,但是我知道将一般C代码转换为模型的任何方法.我听说过的"最佳"性能是可以使用的,并且不再可用的原型,该原型从某些C代码行中产生了令人难以置信的巨大模型. 在您的用例中具有任何实际用途,需要识别原始型号块的翻译器.这样的软件不存在. 其他解决方案 简短答案:否 真正的问题是:您为什么要这样做?黄金引用(如果需要的话)是代码生成的模型,它是一个单向系统.如果要更改设计,请更改模型,重新生成代码.这就是它的设计和打算工作的方式,而不是相反. 但是,您可以将C代码(函数)集成到simulink模型中旧式代码工具,但这与您的要求不同.您还可以使用MATLAB函数块和coder.ceval命令从s
46 2024-04-22
编程技术问答社区
在 Simulink 中初始化 Dymola FMU
我在尝试使用simulink中的FMU文件模拟模型时遇到了问题: 我正在使用Modelon FMI工具箱进行Dymola/Simulink接口将模型交换类型FMU文件(1.0版)导入到Simulink模型中.我有一个MATLAB M文件,该文件可以按编程方式依次模拟该模型,从而在下一个模拟中保存模型的最终内部状态以进行初始化.模拟的第一次迭代无错误运行,但是在第二个迭代中,MATLAB在呼叫模拟时返回以下错误: 模块= partial_run_sim2/basicmodels.system_model_final_sim,log level =错误:[] [FMU状态:错误] fmiinitialize:dsblock_失败, qierr = 1 模块= partial_run_sim2/basicmodels.system_model_final_sim,log Level = 错误:[] [FMU状态:错误]可能的错误(非排量):1. 找不到许可证文件.使用环境变量 "
48 2024-04-22
编程技术问答社区
如何通过Python和ctype访问C语言全局变量结构
我必须将Python与外部SO库集成在一起.不幸的是,C代码使用全局变量SimpleTest_Y(结构),我需要访问它以修改值. . 这里C代码 simpletest.c文件 #include "SimpleTest.h" /* External inputs (root inport signals with auto storage) */ ExtU_SimpleTest_T SimpleTest_U; /* External outputs (root outports fed by signals with auto storage) */ ExtY_SimpleTest_T SimpleTest_Y; /* Model initialize function */ void SimpleTest_initialize(void) { /* external outputs */ SimpleTest_Y.Out1 = 3.0; } simpl
32 2024-04-09
编程技术问答社区
将一阶传递函数转换为C代码
我有一个简单的一阶传输,例如" 3/s+3"或" tf(3,[1 3])"功能,我想在C代码中实现.自上次迭代以来,我有一个C函数,该函数被调用: double output(double input, double t); //usually, t is around 0.01 second 如何在c? 中实现传输函数3/s+3 解决方案 不仅是直接实施3/(s+3)的问题. 您需要使用适当的技术(向前的Euler,向后的Euler,Tustin,Zero-Order Hold)将其离散到Z-DOMAIN,然后实现过滤器的离散版本. 以下是Tustin转换的简单版本. 如书面,需要初始化状态并在此功能的外部存储. double firstOrderLag(double input, double coeff, double dT, double *state){ // Function to implement the discretization of a
28 2024-04-09
编程技术问答社区
在多个c mex s-功能之间共享数据
我正在实施几个C函数.他们必须依靠相同的指针和变量,即当前S功能的依赖性. 基本上,我想在一个"设置" s功能(MDLinitialize内部)中实例化所有变异和指针,然后能够在其MDLOUTPUTS功能中使用这些变量在不同的s函数中使用这些变量.每个S函数都将以c写成. 我找不到Mathworks帮助的任何有用的提示.你有什么主意吗?谢谢. 解决方案 有几种方法可以做到,尽管它们都不是 best 方法. 一种方法是定义DLL中的所有内容,并具有每个S-功能的加载.该问题概述了如何在c s-中共享C结构功能?. 另一种(和我的首选)方法是创建一个自定义数据类型,该类型是包含所有共享数据的C型结构,并且将其作为模型中s功能之间的信号传递.这在doc Using Opaque Data Types in C S-Functions的部分中概述数据类型. DOC显示了在创建自定义结构的S功能中需要完成的各种(相对简单的)事情.在此S-函数MdlOutput
10 2024-04-09
编程技术问答社区
如何在C语言的S函数之间共享一个C结构?
是否有一种方法可以在几个C s功能中共享C结构(仅实例化一次)?这是我的意思:我有一个模型,其许多块被用作C S-功能.这些块中需要许多模型参数,我想创建一个包含所有模型参数的单个对象,并且在我启动模拟时仅进行一次实例化.现在,我将此对象实例化以访问参数,但是在s-函数中共享此对象是很不错的. 只是一个纯粹的猜测:我可以将我的模型参数结构放在单独的dll中,然后从每个c s功能中访问它吗?你们当中有人做过吗? 解决方案 我已经成功实现并测试了DLL的想法(即,在DLL内的结构中收集所有模型参数 - 再加上任何必要的计算 - 并将其链接到其他C s-函数). Simulink是一个单个过程,我相信模拟是一个线程(如果不是可以使其线程安全的方法). dll的模型参数的结构充当单例(每个模拟仅实例化一次,并在其他s函数中共享). update (来自数学的一些答复): Simulink的仿真部分始终是单线螺纹.因此,共享dll没有线程安全问题. 不同S功能
6 2024-04-09
编程技术问答社区
Matlab 2013b生成的代码在mex中产生未定义符号的架构x86_64错误
我有一个由Simulink编码器生成的C代码,我需要在C函数中使用. 这听起来可能有些奇怪,但是我需要在编写s功能的输出之前多次执行此代码(这是一种进化算法,需要模拟许多个人的预测评估和排名...但是这些细节并不重要). 问题是,我在尝试MEX我的代码时似乎对64位指令集有问题. 我将生成的erg_main.c作为如何与生成代码进行交互的示例: /* * File: ert_main.c * * Code generated for Simulink model 'Peltier_model'. * * Model version : 1.14 * Simulink Coder version : 8.5 (R2013b) 08-Aug-2013 * C/C++ source code generated on : Thu Apr 3 18:01:46 2014 * * Target selec
20 2024-04-06
编程技术问答社区
find_system返回的对象不是simulink中的子系统?
当我使用find_system(gcs,'BlockType','SubSystem')时,它会返回不是子系统(afaik) 的事物 在我的情况下,称为 的东西 subsys l1 -x 和 subsysx L2 -z 是子系统,但名称仅用于调试目的,因此我无法使用名称匹配的名称. 为什么[1x51 char]和Sine和RealisesUID出现? 我只希望在模型浏览器树中显示子系统. 'test_simulinkmodel/RealisesUID' 'test_simulinkmodel/subsys L1 - 1' [1x51 char] 'test_simulinkmodel/subsys L1 - 1/Sine' 'test_simulinkmodel/subsys L1 - 1/Subsys1 L2 - 1' [1x71 char] [1x68 char] 'test_simulinkmodel/subsys L1 - 2' [
20 2024-04-01
编程技术问答社区
显示打开一个Simulink模型并关注一个特定块的命令
我在一个单独的文档中有一长串评论列表,这些注释在Simulink模型中引用了命名子系统块.我将使用一个将生成浏览器可观看页面的脚本处理文档,每个块名称可单击 - 因此,当您单击块名时,MATLAB将使用CLI命令启动,并显示该模型评论是指. 文档生成和外壳功能调用都在起作用,但是我找不到将以特定块为中心的命令.我正在寻找一种类型的"查找/搜索"功能,以将视图置于指定块上的视图,一旦模型使用命令行的标准打开命令打开. 我怀疑这可能是不可能的,但值得一提.有什么想法吗? 谢谢 解决方案 使用hilite_system( 'myModel/Path/to/my/block' ); 也突出显示了所选块,您可以使用可选的第二个参数删除突出显示,或者如果需要的话. .
12 2024-04-01
编程技术问答社区
用Simulink进行仿真:分步执行并与外部应用程序交换参数
我必须使用Simulink和外部应用(LS-DYNA)实现耦合模拟.领导模拟是在Simulink中完成的,我想在其中实现一个功能块如下: 使用Windows的CMD进行交互,因此Simulink块应执行以下操作: function [ x,y ] = ExternalSimlation( u,v ) % open the windows cmd and run the external simulation by passing u and v [status,cmdout] = system( 'command for executing the external simulation -u -v'); function [ x,y ] = readcmd( cmdout ) %algorithm to evaluate the cmd output end [x,y] = readcmd(cmdout); end 确切的
22 2024-03-29
编程技术问答社区
与Simulink的联合模拟:分步执行并与外部应用互换参数
我必须使用Simulink和外部应用(LS-DYNA)实现耦合模拟.领导模拟是在Simulink中完成的,我想在其中实现一个功能块如下: 使用Windows的CMD进行交互,因此Simulink块应执行以下操作: function [ x,y ] = ExternalSimlation( u,v ) % open the windows cmd and run the external simulation by passing u and v [status,cmdout] = system( 'command for executing the external simulation -u -v'); function [ x,y ] = readcmd( cmdout ) %algorithm to evaluate the cmd output end [x,y] = readcmd(cmdout); end 确切的
22 2024-03-29
编程技术问答社区
实时的Arduino CAD模拟
我有以下方案:我正在使用一些Flex传感器,Arduino Board和5 Servo来构建动画手.这方面没问题. 但是我有以下想法:在CATIA或任何其他CAD程序中构建手的3D CAD模型,以及实时实时复制真实手动作的虚拟手. 当我用一些传感器的一些数据实时做一些图时,我在MATLAB中使用了一些东西.在CAD程序中可以做到这一点?从Arduino获取数据并基于该数据以实时模拟虚拟手的运动.您能告诉我是否可以在Wich程序中进行模拟? lucian 解决方案 CATIA绝对可以使用您的Arduino数据进入计算机.也可能还有许多其他CAD软件包.例如SolidWorks,AutoCAD,UX等.它们提供了一个API,可以根据您的动画手中的"实时"中的脚本更新CAD模型.您可能会双向行驶,手动驾驶和手动驱动器.我看到CAD软件发生的一个问题是实时方面.根据您的CAD模型的图形密集程度,有一个计算时间开销可以重新绘制/更新模型位置.因此,如果您的手通过复杂的手势快速移动并且
10 2024-03-03
编程技术问答社区
用Simulink控制Arduino步进电机
嗨,我在Arduino和电子产品中很新,所以请忍受我. 我有一个使用MATLAB和SIMULINK控制踏板电机的项目.现在,我只想让事情开始运行.我已经用一个简单的代码将其连接到了台阶电机的示意图测试,并且可以使用(这是在没有MATLAB的情况下完成的).我的问题是如何使用Simulink和Matlab来使电动机运行? 当我尝试运行simulink模型时,我会得到此 我的步进电机驱动板是ULN2003APG ,我的电动机是 . 我已经下载了MATLAB的Arduino硬件支持包,并已经将服务器程序上传到Arduino,以启用Matlab和Arduino之间的通信. 我不知道会导致我遇到的错误是什么.任何帮助将不胜感激! 如果有任何现有指南或任何涵盖此类主题的示例,您可以将我重定向到他们. (如果需要为董事会编写新驱动程序,请给我发送一些我可以阅读的教程.) 预先感谢. 编辑! 以下是我尝试使我的simulink模型运行的一步.
24 2024-03-03
编程技术问答社区
如何将simulink文件转换为XML
我需要将simulink文件(.mdl)转换为XML文件,在任何搜索之后,我都找不到任何内容来帮助我解决此问题. 您会在Java中知道某种方法或现成的解决方案? 解决方案 从R2008B开始,您可以使用 save_system , >> save_system('model.mdl', 'model_xml.xml','ExportToXML', true); 其他解决方案 我知道没有简单的解决方案. 但是,Java中有几个库显然可以分析 simulink文件.它们应该足以为您提供内存表示形式,然后您可以使用XML绑定来产生可传递的XML.
20 2023-12-21
编程技术问答社区