精华内容
下载资源
问答
  • 2021-04-20 13:46:16

    建立基本的StateFlow模型

    元智大學

    機械系

    陳傳生 博士

    建立基本的Stateflow模型 2

    課程目標

    w了解Simulink/Stateflow環境內的術語.

    w使用Graphic Edition建立stateflow diagram.

    w建立包含Stateflow block的基本 Simulink 模型.

    w建立Stateflow/Simulink之間的資料交換介面.

    w模擬Stateflow/Simulink的執行.

    Copyright 1984 - 1999 by The MathWorks, Inc.

    建立基本的Stateflow模型 3

    How Does Stateflow Work?

    建立及模擬一個Simulink/Stateflow的模型將用到下列

    工具

    Dialog

    Graphics

    Boxes

    Editor Debugger

    Data Dictionary

    Explorer

    Simulink

    Generated

    Finder

    Code

    Copyright 1984 - 1999 by The MathWorks, Inc.

    建立基本的Stateflow模型 4

    術語Terminology

    Stateflow Machine

    The collection of all Stateflow diagrams

    contained within a single Simulink model.

    Stateflow Block

    A block inside a Simulink diagram that

    represents Stateflow. one-to-one

    Stateflow Diagram or Chart

    The Stateflow contents that are

    contained in a single graphical window

    and correspond to one Stateflow Block.

    Copyright 1984 - 1999 by The MathWorks, Inc.

    建立基本的Stateflow模型 5

    Creating a New Simulink Model

    and Stateflow Diagram

    wType sfnew to open a new

    Simulink model containing a

    Stateflow block

    wAlternatively, the St

    更多相关内容
  • MATLAB有限元分析与应用源代码flow_sims 问题:2D盖驱动腔流动 解决方法: FDM-有限差分法[1]。 有限元-Galerkin有限元方法[2]。 FVM-具有有限体积离散化的SIMPLE算法[3,4,5] 数字: 每个文件夹包含压力和速度场的...
  • 探索“Stateflow 入门”视频中创建的模型。 ... (2) 在 Preferences 对话框中,选择 Simulink 窗格,然后单击 Open Simulink Preferences。 (3) 在 Simulink
  • Matlab Stateflow中枚举(enmu)的使用

    千次阅读 2020-11-10 10:45:30
    目录1、新建枚举类型2、新建变量3、简单功能使用示例4、生成的代码示例 1、新建枚举类型 形如: // An highlighted block typedef enum { ...在matlab中新建的方法: 方法一,脚本新建: 新建脚本

    1、新建枚举类型

    形如:

    // An highlighted block
    typedef enum
    {
      NM_AllCh = 0,                        /* Default value */
      NM_LinCh,
      NM_VehicleCanCh,
      NM_InternalCanCh,
      NM_ChMax
    }
    NetWokM_Type;
    

    在matlab中新建的方法:
    方法一,脚本新建:

    1. 新建脚本
    2. 键入如下代码:
    classdef  NetWokM_Type < Simulink.IntEnumType 
      enumeration
          NM_AllCh            (0)
          NM_LinCh            (1)
          NM_VehicleCanCh     (2)
          NM_InternalCanCh    (3)
          NM_ChMax            (4)
      end
    end
    

    并将脚本名称改为NetWokM_Type

    方法二,使用Simulink Data Dictionary新建:

    1. 新建数据字典
      在这里插入图片描述
      在这里插入图片描述

    2. 将数据字典与模型关联
      打开“Model Explorer”,点击“File”,选择“Open”,选择刚刚新建的数据字典"EnumDic.sldd",这样模型就与数据字典进行了关联。

    3. 新建枚举类型
      在“Model Explorer”中,选中“EnumDic”中的“Design Data”
      然后做如下操作:
      在这里插入图片描述
      在这里插入图片描述

    2、新建变量

    新建一个枚举型变量
    如下:
    在这里插入图片描述
    在这里插入图片描述

    3、简单功能使用示例

    图片如下:
    在这里插入图片描述
    在这里插入图片描述

    4、生成的代码示例

    前提将该stateflow设置成uint,然后对Function name进行自定义,
    代码如下:

    void MyEnum(const myParamsType *rtu_In, NetWokM_Type rtu_index, B_MyEnum_T
                *localB)
    {
      int32_T tmp;
    
      /* Chart: '<Root>/Chart1' */
      if (rtu_index == NM_InternalCanCh)
      {
        tmp = (rtu_In->Gain + 1) * 3;
        if (tmp > 255)
        {
          tmp = 255;
        }
    
        localB->r = (uint8_T)tmp;
      }
      else if (rtu_index == NM_ChMax)
      {
        tmp = (rtu_In->Gain + 3) * 5;
        if (tmp > 255)
        {
          tmp = 255;
        }
    
        localB->r = (uint8_T)tmp;
      }
      else if (rtu_index == NM_LinCh)
      {
        tmp = (rtu_In->Gain + 5) * 7;
        if (tmp > 255)
        {
          tmp = 255;
        }
    
        localB->r = (uint8_T)tmp;
      }
      else
      {
        tmp = (rtu_In->Gain + rtu_In->Init) + rtu_In->Offset;
        if (tmp < 0)
        {
          tmp = 0;
        }
        else
        {
          if (tmp > 255)
          {
            tmp = 255;
          }
        }
    
        localB->r = (uint8_T)tmp;
      }
    
      /* End of Chart: '<Root>/Chart1' */
    }
    

    以上,仅为本人自用。

    展开全文
  • 在Simulink模型中,经常会用Stateflow做一些状态转移或者流程图的建模。除了状态转移的逻辑以外,也经常需要关注Statefolw的参数,包括Data和Event等。...1.首先在Matlab命令行中输入open sf_sec...

    在Simulink模型中,经常会用Stateflow做一些状态转移或者流程图的建模。除了状态转移的逻辑以外,也经常需要关注Stateflow的参数,包括Data和Event等。

    本文会介绍通过Matlab脚本调用API来获取和修改Stateflow参数的方法。本文例程基于Matlab2018a版本。

    1 手动获取/修改Stateflow参数

    1.首先在Matlab命令行中输入open sf_security.slx,打开Matlab自带的一个Stateflow例程。模型中包含了一个Chart模块,以及若干输入输出。
    在这里插入图片描述
    2.点击Simulink上方工具栏中的Model Explorer,再选中左边的Security System,就可以看到该Chart中的所有内容信息。
    在这里插入图片描述
    3.选中Chart中的某个参数,就会显示出该参数的具体配置。在配置界面中可以手动修改。后文会说明如何通过脚本修改这些参数。
    在这里插入图片描述

    2 通过Matlab脚本获取/修改Stateflow参数

    Stateflow的API和一般的Simulink模块有所不同,接下来会一步一步研究如何用脚本找到例子中的Stateflow参数。

    2.1 获取Stateflow操作句柄

    由于Stateflow的策略都是在Chart模块中体现的,所以第一步是获取Simulink里面的Chart的句柄。

    在Matlab中输入以下命令行:

    >>rt = sfroot;
    >>myState = rt.find('-isa','Stateflow.Chart');
    

    然后,在Matlab工作区就会返回名为myState的Chart对象,这个Chart对象就是模型中的Security System。注意,如果模型中有多个Chart,就会返回一个包含所有Chart对象的数组。
    在这里插入图片描述
    获取了Stateflow句柄后,可以通过脚本修改这个Chart属性。例如下面的命令,可以将Stateflow语言设置为C语言:

    >> myState.ActionLanguage = 'C'
    

    属性就改成了如下所示:
    在这里插入图片描述

    2.2 获取Data对象

    在Matlab命令行中输入以下代码,就可以返回所有该Chart中包含的所有Data。

    >>StateData = myState.find('-isa','Stateflow.Data');
    

    Matlab右侧的工作区:
    在这里插入图片描述
    对应的Model Explorer中的8个Data:
    在这里插入图片描述
    当然,在find函数中也可以加入查找的条件。譬如,查找Name为D_mode的Data,代码为:

    >>StateData = myState.find('-isa','Stateflow.Data','Name','D_mode');
    

    或者查找Scope为Input的Data,就会返回七个相应的Data:

    >> StateData = myState.find('-isa','Stateflow.Data','Scope','Input');
    

    2.3 修改Data对象

    假如想要修改D_mode的Type为single,可以通过以下代码:

    >>StateData = myState.find('-isa','Stateflow.Data','Name','D_mode');
    >>StateData.DataType = 'single';
    

    这样的话,Model Explorer中的Type就被改为了single,如图:
    在这里插入图片描述
    对于Stateflow中的Event和Message等其他类型的参数,也可以通过类似的方式用脚本调用API去修改,这里不再赘述。

    3 关于<Matlab技巧>的总结

    < Matlab编程技巧 >详细阐述了如何通过Matlab调用一些API接口修改模型。

    实际上,通过Matlab可以调用的接口远不止于此,但这几个类型的脚本是最为实用的,能解决实际工作中遇到的大部分问题,因为在MBD开发中,模型无非就是由模块、信号线、数据字典和状态转移组成的。

    在不同的公司,面对不同项目的过程中,经常会总结出一些适用于自己团队的模型建模规范。譬如,要求在某种情况下,需要指定模块的输出类型等等。如果将这一系列自定义的规范写成脚本,集成到Simulink的Model Advisor中,可以减少策略工程师开发脚本的时间,将会大大提高模型检查效率。后续将会以这几篇文章为基础,研究Model Advisor的应用。

    >>返回个人博客总目录

    展开全文
  • 这是学习openfoam的第二周。每天能学习的时间不多,第一周将时间都花在研究怎么安装ubuntu和openfoam上。期间反反复复装了好多个版本:Ubuntu先是从14到18,最后再试试16。而openfoam最后锚定再openfoam4上。为什么...

    这是学习openfoam的第二周。每天能学习的时间不多,第一周将时间都花在研究怎么安装ubuntu和openfoam上。期间反反复复装了好多个版本:Ubuntu先是从14到18,最后再试试16。而openfoam最后锚定再openfoam4上。为什么选这个版本呢?其实安装的时候,我主要都是参照网络上一些博客的教程来做的。最后是参考了某位前辈的教程,但是不知道为什么浏览记录里面找不到了...小伙伴们想要安装的话上网搜还是能搜到很多成功案例的。

    做这个系列主要是计划在9月份入学之前,将openfoam这个软件用熟,同时能补补数学和流体等相关知识。现在主要的参考教程是安装openfoam4时自带的userGuide。虽然说是全英的,但是除了一些专业词汇之外,还是能看个大概的。因此,写博客的第二个原因是将主要的内容译成中文,供大家交流和参考,同时也能加深自己的理解吧!现在网上搜“openfoam 4 教程” 就能找到OpenFoam使用手册的中文版,以下是链接:

    https://wenku.baidu.com/view/e069a5b50975f46526d3e153.html

    除了一些排版的问题之外,机翻(应该是)也算是可读的。而我所做的,大概就是除了翻译部分比较重要的内容之外,自己对着教程敲一遍代码,同时加入自己的想法,排除错误,并作一些参数上的修改,然后对比结果。

    什么是Lid-driven Cavity Flow?

    中文名称可译作“顶盖驱动方腔流”。理想模型如下左图(UserGuide),一般试验装置如下右图(张金凤)。方腔流指顶部平板以恒定速度驱动规则区域内封闭的不可压流体(例如水)的流动,在方腔流的流动中可以观察到几乎所有可能发生在不可压流体中的流动现象。“从20世纪80年代以来,方腔流由于其广泛的工业应用和科研价值受到各个领域的关注”(张金凤)。

    如上左图,顶上的盖子(wall)以1 m/s 的速度在x轴正方向上移动,而另外三个面是固定的。在这次的教程中,流体的属性被假定为层流(lamilar)。层流是比较简单且基础的,对初学者来说是个入门的学习对象。

    敲代码!

    整个过程可以分为三步:预处理(pre-processing),运行(run)和后处理(post-processing)。

    1. 预处理(pre-processing)

    首先第一步,将教程文件备份到$FOAM_RUN所在目录(我的是在home/OpenFOAM/foamer-4.1,可能每个人的都不一样,但是应该都在home目录里面吧)。在终端上输入下面的代码,最后来到复制好的cavity文件夹内。

    cd $FOAM_RUN
    cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
    cd cavity

    在终端上输入ls,看看有什么文件:

    我们可以看到有3个文件夹,下面,教程将一一为我们讲解。预处理也分几步走,它们是:Mesh generation(生成网格),Boundary and initial conditions (边界和初始条件),Physical properties (物理属性),Control (控制开始时间之类的),Discretisation and linear-solver settings (太长了,后面再解释翻译吧)

    1.1 Mesh generation (生成网格)

    一般来说,openfoam都是处理生成3维网格的,但是通过一些设置,我们可以将其中一维设置成空的(empty),从而将3维问题降为2维。而空腔流主要是在2维平面上做的。我们先打开system里面的blockMeshDict文件,操作如下:

    用sudo是因为Ubuntu16不能直接修改里面的文本。文本如下:

    先看vertices下面的(0 0 0)等8个点,他们代表这个网格(mesh)的顶点。下方4个点的第三列都是"0.1",代表它们z方向占的很少,所以可以将整个空间当成一个二维平面来看待。而上方covertToMeters则是单位,即每个“1”是多少米。这里是0.1米。接着看下方:

    blocks的功能是将上面定义的顶点连成一个空间的块(如Figure 2.2)。我们可以发现这个顺序是逆时针。后面(20 20 1)表示我们在x y z 三个方向上设置的点数(cell)。在这里,x y 上分别是20个,z上只有1个,这下真的成2维了哈哈!

    继续看下面代码:

    这里我们定义每个面的属性。第一个moving wall是(3 7 6 2),为什么是这个排列呢?这里我们讲到右手定则(如上右图)。右手拇指朝里,点的方向就是手指的旋转的方向。而其他面都是固定面,拇指方向朝外。至于为什么有这样的区别呢?还有那些type后面的wall,empty都代表什么意思呢?我想我需要再深入地学习才能正确地解答。希望有会的来教教我!

    我们可以看看生成的网格是怎么样的。先生成网格,可以看到终端滚了很多信息,再生成一个空的foam文件,进去后ctrl+o保存即可。然后用paraview软件查看。代码如下:

    blockMesh 
    nano foamer.foam
    paraview foamer.foam &

    敲出来的效果是这样的,然后就会弹出软件:

    先点击左边的绿色按钮apply,然后在上面选surface with edges,就能看到生成的网格!下面可以数数看,是不是x,y轴都是20个呢?

    鼠标左键拉一下网格,可以看到z方向上只有一个,对应(20 20 1)。

    非常简单明了,就不改参数了,我们继续下一步!

    2.2 Boundary and initial conditions (边界和初始条件)

    在cavity的目录下,输入ls,看到有文件“0”。

    进入文件夹0,看到有如下文件:

    分别是压力,速度的边界初始值设定。我们看看p文件里面是怎样的:

    先讲一下dimension。后面的[0 2 -2 0 0 0 0]代表国际单位制对应的多少次方。顺序是[质量kg 长度m 时间s 开尔文K 摩尔质量mol 电流A 光强(坎德拉)cd]。所以,上面的单位是m2s-2,即kinematic pressure(运动压力)。internalField设置成uniform可以理解为在场里的数据可以用一个值去描述。boundaryField下,fixedwalls跟movingwall都设置了zeroGradient,意思是常梯度对于压力来说是零。frontAndBack这里因为是2维的情况,所以设置成empty。

    再看看U文件:

    看dimension知变量的量纲是m/s,即速度。movingWall的值为(1 0 0),意思是只在x轴方向上有速度1m/s。fixedWalls定义成noSlip,即no-slip,无滑移的意思。无滑移的意思是与面接触的流体不会发生移动。

    1.3 Physical properties (物理属性)

    回到cavity目录,进去constant文件,可以看到有一个transportProperties的文件:

    nano一下:

    里面只有这一行。什么意思呢?我们讲讲原理。首先,这次的空腔流属于层流(laminar),等温(isothermal),不可压缩(incompressible)。对于这个例子,我们用到的icoFoam求解器中,唯一的设置就是运动粘度(kinematic viscosity),即nu。单位是m2/s,数值这里是0.01。怎么来的?看下面式子:

    对于这次的例子,我们将雷诺数Re设置成10(非常低,层流),而d=0.01m是设置的特征长度(characteristic length),U=1m/s为速度,那个斜斜的v就是nu,运动粘度。将数据代到上式,得到nu=0.01。后面我们会修改一下雷诺数,再进行对比。

    1.4 Conrtol

    system文件夹里,controlDict里面有关于整个时间控制的设置。nano进去看看:

    一行行分别解释:1.开始时间定在t=0s;2.停在停止时间;3.停止时间是t=0.5s;4.时间间隔△ t=0.005,即有100个间隔;

    打断一下,这个时间间隔是随便设置的吗?不是的。为了保证时间上的精度,还有运行icoFoam时的数值稳定性,这里定义一个Courant number Co

    δt就是时间间隔,U是速度,δx是速度方向的单个格子的长度(cell size)。在任意方向,我们都要保证这个Co<1。先计算δx:

    Co为1,即取最坏的情况。则δt可得:

    继续:5. writeControl设置怎么输出这个结果,timeStep即时间每走一步输出一组;6. 这里是每20个δt为一步的意思,即0.1s输出一组数据,总的是0.1, 0.2, 0.3, 0.4和0.5 s时,数据会被输出。后面的教程没有解释,按默认即可。

    1.5 Discretisation and linear-solver settings

    顾名思义,这部分是离散化和线性化的设置。对应的文件是system里面的fvSchemesfvSolution。教程并没有给过多解释。我们打开fvSolution:

    nano fvSolution

    看到PISO的子函数,在空腔流这个闭合的不可压缩的系统中,pRefCell和pRefValue都设置成0。在这里压力都是相对的。改变这两个值只会改变绝对压力场,而不改变相对压力和速度场。

    2. Running an application

    来到第二大步,运行程序。在cavity目录,输入:

    icoFoam

    然后一下子就算好了。

    3. Post-processing

    最后我们再看看输出的结果!

    在cavity目录,输入ls看看:

    是不是多了一些文件?就是1.4 Control里面我们要求输出的5组数据!

    输入下面代码,查看查看数据:

    paraFoam &

    然后软件就弹出来:

    点绿色的apply,再做如下设置:

    再选U:

    换一种表示方式:

    方式是在上方的Filter-→common,选择Glyph。

     

    小结:

    这次踏踏实实的跟着教程走一遍,对openfoam有了初步的了解。这个tutorial后面还有很多教的,也还有很多设置没有调节,但先就此打住吧。这次的学习也让我意识到自己对流体的基础知识还不够了解,所以以后也要加强这方面的学习!

     

    参考文献:

    [1] OpenFOAMUserGuide version 4.0

    [2] 张金凤, 常璐, 马平亚. 高雷诺数顶盖驱动方腔流实验[J]. 水科学进展, 2015, 26(2):250-256.

    展开全文
  • Flow例程和图形库。 因此,请记住正确编辑函数“ setPath.m”。 该代码主要包含葡萄牙语注释,因此对于非葡萄牙语发言,我深表歉意。 2.文章OpenDSS定制代码 Visual Studio C#OpenDSS定制项目的目录。 从项目上说,...
  • 错误信息:"Unable to locate a C-compiler required by Stateflow and MATLAB Function blocks.Use 'mex -setup' to select a supported C-compiler."使用mex -setup 选择VS2012之后还是出错,使用低版本2010a或者...
  • 运行MBD_APPLI_JOC2017.slx需要MATLAB、Simulink、Stateflow、DSP System Toolbox、Signal Processing Toolbox。您还需要Simulink的Real-Time Pacer( ...
  • MATLAB串口操作

    千次阅读 2021-07-24 17:51:09
    ValuesReceived = 0 ValuesSent = 0 SERIAL specific properties: BaudRate = 9600 BreakInterruptFcn = DataBits = 8 DataTerminalReady = on FlowControl = none Parity = none PinStatus = [1x1 struct] ...
  • timestepinput = 'Input time step of calculation in openFOAM(units:s):'; timestep = input(timestepinput); %constants rhos = 1500; %kg/m3 dp = 65e-6; %m Vp = 4/3*pi*(dp/2)^3; %m3 mp = Vp*rhos; %kg per ...
  • 转自 http://blog.sina.com.cn/s/blog_3ebc3c2901018v59.html最近两天被MatLab搅得是鸡飞狗跳。先是在Mac下的2012a莫名其妙的启动之后,CPU占有率飙升超过100%,完全没法用,连用个logo命令都不得安生。无奈重装。...
  • matlab之产品大全

    千次阅读 多人点赞 2020-12-16 19:30:59
    matlab大全链接:入口1或者入口2 这里仅对matlab存在的工具做一个简单梳理,方便日后使用。 Matlab版本:R2020b 应用如下: 一、数学、统计和优化 1.曲线拟合工具箱 使用回归,插值和平滑使曲线和曲面适合数据...
  • 文章以Mutlab为设计平台,通过Simulink,Stateflow搭建完整的PMSM电机控制系统模型,并在此模型基础上开发GUI人机接口系统,实现了电机控制设计开发全程算法的验证和性能测试,且便于系统性能和参数改进以及后期的...
  • MATLAB 方程式求根

    2022-03-27 20:01:44
    MATLAB 方程式求根
  • matlab版本问题

    2021-04-19 02:16:57
    Embedded MATLAB is also supported by Stateflow® and SimEvents™. Support for algorithms that span multiple M-files, improving algorithm reuse and maintenance Support for calling external C functions...
  • matlab声线图源代码#原子 我用于开发的Atom插件集合 ##安装 apm install activate-power-mode advanced-open-file atom-material-ui autocomplete-modules autocomplete-paths color-picker editor-stats ...
  • Matlab并行计算(新手)

    万次阅读 多人点赞 2020-10-22 18:11:46
    4 说明——matlabpool与partool 在以前版本的matlab中,开启多线程池用的命令是matlabpool,例如: matlabpool('open',8); 这一步是想开启8线程的线程池,但是从R2013b(具体版本不是很确定)开始,parpool命令取代...
  • 看很多别的数学的时候,你会经常接触这样一些概念:Open set / Closed set,set basis,Hausdauf, continuous function,metric space, Cauchy sequence, neighborhood, compactness, connectivity。很多这些也许在...
  • 使用 MATLAB Function 模块创建自定义功能此示例说明如何创建模型,该模型使用 MATLABFunction 模块来计算值向量的均值和标准差。创建模型创建一个新 Simulink® 模型,并从 User-Defined Functions 库中插入一个 ...
  • ------------------------------- function open_image_Callback(hObject, eventdata, handles) % hObject handle to open_image (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB ...
  • matlab中使用自带的vision.BlockMatcher算法计算两张输入图像之间的光流 直接码代码 blockmatching.m clear all; close all; %% parmeters block_size = 71; dis = 21; olp = 41; thresd = 0.9; down = 1/4; ...
  • win32 v2.4.1 Included with MATLAB √ √ √ √ √ √ √ Microsoft Visual C++ 6.0 1, √ √ √ √ √ √ √ √ Intel C++ Composer XE 2011 √ √ Intel C++ Compiler 11.1 1, √ √ Open Watcom v1.8 ...
  • fortran转matlab

    2020-07-24 16:25:29
    fortran中entrystart ...... return怎样转为matlab程序: ***************************************************************** SUBROUTINE USER ******************************************************...
  • 使用Matlab 2016a阻止集合构建错误

    千次阅读 2021-04-26 14:26:33
    matlab R2016a.OS:我所生成的Windows 10All是Master Block,除了用于测试用例之外,没有其他任何东西,我得到以下错误:请帮助我完成这项工作,因为我确实需要完成一些工作。Ali以上来自于百度翻译以下为原文Hi,I ...
  • matlab guide 快速入门 matlab GUI为用户图形化界面,可以使用guide命令进入图形化编辑界面 回车弹出GUIDE 快速入门,可以选择所需要的模板进行编辑,默认为Blank GUI 新建 GUI : 创建一个新的模板进行图形化编辑 ...
  • matlab中GUI界面的一些设计与操作

    千次阅读 2022-02-21 14:39:41
    matlab中GUI界面的一些设计与操作
  • **《Applications of MATLAB in engineering》** 本文是对MATLAB一些应用的介绍。可以帮助理解MATLAB的功能和用法 学习于B站视频,整理出来一些学习资料 需要word版的可以联系我 一些源代码也会在我的另一份博文...
  • 主函数2.DHT11初始化程序3.DHT11测量程序4.SGP30模块初始化六、MATLAB GUI部分1、界面设计2、程序①.串口接收及显示②.串口接收③.串口设置七、源代码及原理图压缩包 一、题目要求   温度,湿度,CO2作为农业生产...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,076
精华内容 830
关键字:

open flow matlab

matlab 订阅
友情链接: bjybsk.rar