精华内容
下载资源
问答
  • Matlab调用子文件夹下面的m文件

    千次阅读 2017-08-24 09:54:54
    添加以下代码: addpath(genpath(pwd)); 即可调用子文件下面的m文件,方便管理

    添加以下代码:

    addpath(genpath(pwd));

    即可调用子文件下面的m文件,方便管理

    展开全文
  • 在直接数字域设计中,我们常常需要用到PID算法,而PID算法投入单片机使用时,往往需要硬件的支持,在调试时非常麻烦。本文通过Matlab仿真的手段实现PID,方便了开发者对系统的设计和实时调试。

    0.符号说明

    1. y(k)——系统响应输出的离散值
    2. u(k)——数字PID控制输出的离散值
    3. r(k)——期望输出的离散值(事先已知),在本例中为常数(即阶跃输入)
    4. e(k)——e(k)=r(k)-y(k),为期望值-实际值,是单位负反馈的误差比较信号
      图片来源于百度百科
      注:图片来源于百度百科

    1.如何根据连续系统建立差分方程

    1.1.获取连续系统的传递函数

    线性定常系统的控制中,PID是个非常常见的控制方式,如果可以通过Matlab仿真出PID的控制效果图,那么对系统设计时的实时调试将会容易得多。在这里我们将会以一个利用系统辨识参数的PID设计为为例展示Matlab仿真PID的过程。
    首先需要对一个未知的系统的参数进行辨识,以延迟环节可以忽略不计的电机调速系统为例。将时间戳导入xdata向量,对应的时刻转速导入ydata向量,进行系统辨识

    链接:Matlab的系统辨识

    我们就以上文链接中辨识的系统传递函数为例:
    G ( s ) = 0.998 0.021 s + 1 G(s)=\frac{0.998}{0.021s+1} G(s)=0.021s+10.998因此通过tf函数建立系统结构体如下:

    sys=tf(0.998,[0.021,1]);   %建立被控对象传递函数,即式4.1
    

    1.2.获取离散系统的传递函数

    由于是数字PID仿真,我们需要选取一个采样时间,本案例选用的是0.005s(注意,采样周期应该小于系统纯滞后时间的0.1倍)。在对其进行数字PID控制前,我们需要将这个系统离散化:

    ts=0.005;  %采样时间=0.005s
    dsys=c2d(sys,ts,'z');      %离散化
    

    dsys即我们根据采样周期离散化的Z变换系统。首先我们需要提取这个Z变化d那系统的参数方便后面的计算:

    [num,den]=tfdata(dsys,'v');%'v'代表强制以向量的格式(默认为元胞数组)输出num和den
    

    1.3.转换为差分方程

    求解出的Z变换表达式为 d s y s = n u m ( 1 ) ⋅ z + n u m ( 2 ) d e n ( 1 ) ⋅ z + d e n ( 2 ) = 0.2114 z − 0.7881 dsys=\frac{num(1)\cdot z +num(2)}{den(1)\cdot z+den(2)}=\frac{0.2114}{z-0.7881} dsys=den(1)z+den(2)num(1)z+num(2)=z0.78810.2114
    在PID仿真的过程中我们需要求解出时域表达式 ,因此需要借助差分方程解决,对于以下的Z变换:

    \begin{equation}
    Y(z)=dsys\cdot U(z)=\frac{num(2)}{den(1)\cdot z+den(2)}\cdot U(z)
    \label{eq:Sample1}
    \end{equation}

    \begin{equation}
    zY(z)+den(2)Y(z)=num(1)zU(z)+num(2)U(z)
    \label{eq:Sample2}
    \end{equation}
    对上式进行反Z变换,可以得到以下的差分方程:

    \begin{equation}
    y(k+1)+den(2)y(k)=num(1)u(k+1)+num(2)u(k)
    \label{eq:Sample3}
    \end{equation}

    \begin{equation}
    y(k+1)=-den(2)y(k)+num(1)u(k+1)+num(2)u(k)
    \label{eq:Sample4}
    \end{equation}
    位置型PID仿真时实际上可以不需要保存前一个数据(u(k)和y(k)),增量型PID必须要保存前一个数据。这里我们使用了位置型PID,但仍然利用 u 1 u_1 u1 y 1 y_1 y1保存了上一个数据,仅仅是为了演示这一过程。\begin{equation}
    y(k+1)=-den(2)y(k)+num(1)u(k+1)+num(2)u(k)
    \end{equation}
    可以转换为下面的式子:
    \begin{equation}
    y(k)=-den(2)y_1+num(1)u(k)+num(2)u_1
    \label{eq:Sample5}
    \end{equation}
    我们的差分方程就这样建立完毕。注意,此差分方程仅仅是描述系统模型的运算规律的,和我们的控制无关。因此是y(k)和u(k)的映射关系。我们下面的控制则是利用负反馈信号e(k)导出u(k)的输出,求解的是控制器u(k)的序列值。

    2.基本PID控制原理

    以位置型PID控制为例。将连续的PID控制转换为数字式时,微分环节被用差分代替,积分环节被累加和代替,比例环节则保持不变。差分的实现非常简单,只需要用 e ( k + 1 ) − e ( k ) e(k+1)-e(k) e(k+1)e(k) e ( k ) − e 1 e(k)-e_1 e(k)e1等效即可。积分的实现在每一次运算的后面都累加原来的误差,即Ee=Ee+e_1;即可。PID的控制器输出 u ( k ) = K p ⋅ e ( k ) + K d ⋅ ( e ( k ) − e 1 ) + K i ⋅ E e u(k)=Kp\cdot e(k)+Kd\cdot (e(k)-e_1)+Ki\cdot Ee u(k)=Kpe(k)+Kd(e(k)e1)+KiEe
    PID控制器构造完毕,我们需要通过r(k)和y(k)得到e(k),再通过e(k)得出u(k),进而再求解出y(k),再结合r(k)求解出e(k),…以此循环,求解出离散的响应点。
    详细的代码如下:

    ts=0.005;  %采样时间=0.005s
    sys=tf(0.998,[0.021,1]);   %建立被控对象传递函数,即式4.1
    dsys=c2d(sys,ts,'z');      %离散化
    [num,den]=tfdata(dsys,'v');   %
    e_1=0;      %前一时刻的偏差      
    Ee=0;       %累积偏差
    u_1=0.0;    %前一时刻的控制量
    y_1=0;       %前一时刻的输出
    %PID参数
    kp=0.22;    
    ki=0.13;
    kd=0;
    u=zeros(1,1000);%预先分配内存
    time=zeros(1,1000);%时刻点(设定1000个)
    for k=1:1:1000
        time(k)=k*ts;   %时间参数
        r(k)=1500;      %期望值
        y(k)=-1*den(2)*y_1+num(2)*u_1+num(1)*u(k);%系统响应输出序列
        e(k)=r(k)-y(k);   %误差信号
        u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1); %系统PID控制器输出序列
        Ee=Ee+e(k);    %误差的累加和
        u_1=u(k);    	%前一个的控制器输出值
        y_1=y(k);    	%前一个的系统响应输出值
        e_1=e(k);		%前一个误差信号的值
    end
    %(仅绘制过渡过程的曲线,x坐标限制为[0,1])
    p1=plot(time,r,'-.');xlim([0,1]);hold on;%指令信号的曲线(即期望输入)
    p2=plot(time,y,'--');xlim([0,1]);%不含积分分离的PID曲线
    hold on;
    

    输出的PID控制曲线如下:
    PID控制

    3.比较PID输出,分析参数产生的影响

    一个基本的PID就完成了。下面如果我们想要知道修改PID的三个参数kp,ki,kd会带来什么效果,只需要在程序中修改即可。为了方便起见,我们建立一个PID的数组,kp,ki,kd每次都取数组的一个值,然后设定一个大循环开始循环仿真。再利用subplot输出子图的方式将所有的PID效果都输出到一个图进行对比。该代码根据上述代码修改已经很容易,PID比较图的代码如下:

    close all
    PID=[0.22,0.13,0;
        0.4,0.13,0;
        0.4,0.25,0;
        0.8,0.23,0.4;
        0.8,0.2,1;
        0.7,0.2,0.9];%初始化PID参数
    for pid=1:1:6
    ts=0.005;  %采样时间=0.005s
    sys=tf(0.998,[0.021,1]);   %建立被控对象传递函数,即式4.1
    dsys=c2d(sys,ts,'z');      %离散化
    [num,den]=tfdata(dsys,'v');   %
    e_1=0;      %前一时刻的偏差      
    Ee=0;       %累积偏差
    u_1=0.0;    %前一时刻的控制量
    y_1=0;       %前一时刻的输出
    %PID参数
    kp=PID(pid,1);    
    ki=PID(pid,2);
    kd=PID(pid,3);
    u=zeros(1,1000);
    time=zeros(1,1000);
    for k=1:1:1000
        time(k)=k*ts;   %时间参数
        r(k)=1500;      %给定量
        y(k)=-1*den(2)*y_1+num(2)*u_1+num(1)*u(k);
        e(k)=r(k)-y(k);   %偏差
        u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);   
        Ee=Ee+e(k);    
        u_1=u(k);    
        y_1=y(k);    
        e_1=e(k);
    end
    subplot(2,3,pid);
    p1=plot(time,r,'-.');xlim([0,1]);hold on;
    p2=plot(time,y,'--');xlim([0,1]);
    title(['Kp=',num2str(kp),' Ki=',num2str(ki),' Kd= ',num2str(kd)]);
    hold on;
    end
    

    输出的子图矩阵如下:
    PID子图矩阵
    可以发现,修改Kp会造成上升时间的缩短,但是有可能也会带来较大的超调。积分的增加是一个严重的滞后环节,会减小相位裕度,也会带来超调(超调量并不是绝对的,相对于较小的Kp可能会产生较大的超调,而Kp较大时超调会减小(例如第一行的1图和2图的对比))。然而积分的引入也是必要的,否则将会很长时间无法削弱误差e(k)(例如第二行第二个图)。微分的引入相当于一个超前校正,会减少超调,但是过渡的微分很可能会造成尾部振荡,系统逐渐变得不稳定。因此微分和积分之间需要一个平衡,当满足这个平衡的时候,系统几乎没有振荡,同时响应速度也较快。(第一行的图3是积分过多,产生超调,第二行的图1和图3就比较理想)
    综合上述,PID的调节经验可以归结为以下几点:

    • Kp较小时,系统对微分和积分环节的引入较为敏感,积分会引起超调,微分可能会引起振荡,而振荡剧烈的时候超铁也会增加。
    • Kp增大时,积分环节由于滞后产生的超调逐渐减小,此时如果想要继续减少超调可以适当引入微分环节。继续增大Kp系统可能会不太稳定,因此在增加Kp的同时引入Kd减小超调,可以保证在Kp不是很大的情况下也能取得较好的稳态特性和动态性能。
    • Kp较小时,积分环节不宜过大,Kp较大时积分环节也不宜过小(否则调节时间会非常地长),在下面这个例子中我们还会介绍到,当使用分段PID,在恰当的条件下分离积分,可以取得更好的控制效果。原因在于在稳态误差即将满足要求时,消除了系统的滞后。因此系统超调会明显减少。本例中采样的抗积分饱和的方法是遇限削弱积分法。

    4.改进PID算法(遇限削弱积分法)

    遇限削弱积分法的原理是
    u ( k ) > u m a x u(k)>u_{max} u(k)>umax时,若e(k)>0即输出值还未到达指定值,则认为积分会带来滞后,不再积分。
    u ( k ) < 0 u(k)<0 u(k)<0时,若e(k)<0即输出值超过了指定值,则认为积分会带来滞后,不再积分。
    在本案例中认为 u m a x = r ( k ) u_{max}=r(k) umax=r(k)
    改进PID算法如下(需要些两个循环,当然也可以用一个循环,将其中的PID设为一个子过程调用):

    close all
    ts=0.005;  %采样时间=0.005s
    sys=tf(0.998,[0.021,1]);   %建立被控对象传递函数,即式4.1
    dsys=c2d(sys,ts,'z');      %离散化
    [num,den]=tfdata(dsys,'v');   %
    e_1=0;      %前一时刻的偏差      
    Ee=0;       %累积偏差
    u_1=0.0;    %前一时刻的控制量
    y_1=0;       %前一时刻的输出
    %PID参数
    kp=0.22;    
    ki=0.13;
    kd=0;
    u=zeros(1,1000);
    time=zeros(1,1000);
    for k=1:1:1000
        time(k)=k*ts;   %时间参数
        r(k)=1500;      %给定量
        y(k)=-1*den(2)*y_1+num(2)*u_1+num(1)*u(k);
        e(k)=r(k)-y(k);   %偏差
        u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);   
        Ee=Ee+e(k);    
        u_1=u(k);    
        y_1=y(k);    
        e_1=e(k);
    end
    p1=plot(time,r,'-.');xlim([0,1]);hold on;
    p2=plot(time,y,'--');xlim([0,1]);
    hold on;
    a=1;%控制积分分离的二值数
    e_1=0;Ee=0;u_1=0.0;y_1=0;%重新初始化       
    for k=1:1:1000
        time(k)=k*ts;   %时间参数
        r(k)=1500;      %给定量
        y(k)=-1*den(2)*y_1+num(2)*u_1;
        e(k)=r(k)-y(k);   %偏差
        u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);   
         if ((u(k)>r(k)) && (e(k)>0))||((u(k)<0) && (e(k)<0))
             a=0;
         else 
             a=1;
         end     
        Ee=Ee+a*e(k);    
        u_1=u(k);    
        y_1=y(k);    
        e_1=e(k);
    end
    p3=plot(time,y,'-');xlim([0,1]);
    title('含积分分离与不含积分分离的对比');
    legend([p1,p2,p3],'指令信号','不含积分分离','含积分分离');
    

    输出的曲线对比图如下:
    积分分离之后的改进PID
    可以发现,系统的超调量明显减少了,调节时间也减少了一点。原因在于我们采用了分段PID的手段,既消除了稳态误差还削弱了积分环节带来的滞后影响。

    5.simulink仿真

    需要的模块名称(不区分大小写)如下:

    • gain(参数分别为0.22和0.13/0.005)
    • sum(参数分别为"|±"和"|++")
    • integrator
    • scope
      注意:本文使用的是离散PID仿真,而simulink使用的是连续系统仿真,转换PID参数时P参数不变,I参数应该除以仿真间隔Ts=0.005,D参数应该乘Ts。

    以表中第一组PI参数为例:
    在这里插入图片描述
    得到的示波器曲线如下:
    在这里插入图片描述

    希望本文对您有帮助,谢谢阅读。

    展开全文
  • python调用m文件需要安装matlab.engine,注意matlab版本与python版本的兼容性,一般matlab仅支持python3.6以下版本,matlab2020b支持python3.8,可以通过命令窗口查看python版本,开始-->运行-->输入“cmd”,...

    系统环境:windows10,64bit

    matlab 2020b,64bit   python3.8.8

    前提:windows下需要有matlab软件和python。python调用m文件需要安装matlab.engine,注意matlab版本与python版本的兼容性,一般matlab仅支持python3.6以下版本,matlab2020b支持python3.8,可以通过命令窗口查看python版本,开始-->运行-->输入“cmd”,进入cmd。在窗口输入“python”即可查看系统的python版本号。

    1,进入matlab的安装位置,找到engine下的python文件夹,如D:\MATLAB\R2018b\extern\engines\python。此时python目录下有两个文件:dist目录和setup.py文件

    2,按住sfift+鼠标右键,选择“在此处打开命令窗口”,进入命令界面。输入Python setup.py install。

    输入命令: Python setup.py install

    3,如果上述命令执行完成且没报错,则可以看到D:\MATLAB\R2018b\extern\engines\python目录下除去dist目录和setup.py文件,新增加“build”目录。

    4,点击“build”目录,找到matlab文件夹,D:\MATLAB\R2018b\extern\engines\python\build\lib\matlab。复制此文件夹至python安装位置的Lib目录下,该目录下则出现matlab文件夹及其子文件内容,D:\Python\Python36\Lib\matlab。

    5,以上matlab.engine完成,现在python中调用m文件。此处采用jupyter notebook执行m文件,待执行的m文件为脚本。可以采用之前写好的m文件进行,将m文件放置在jupyternotebook 开发环境的路径下。

        import matlab.engine
        engine = matlab.engine.start_matlab()

     上述完成matlab调用,m文件分为m脚本,自定义m函数,系统m函数,调用方式有所差异,如果选择不对,会报错。

    eng.readmat(nargout=0) #将readmat当作m脚本运行,nargout=0表示无输出参数,默认为1。

    eng.sqrt(matlab.double([1.,2.,3.,4.,5.])) #调用matlab自带函数

        c = 1.0
        b = 2.0
        a = eng.getsum(c,b) #引用自写的脚本函数,c,b为输入参数

    上述为python调用m文件的简单例子,经测试,调用方式基本上和直接在matlab运行环境类似。
     

    展开全文
  • MATLABM函数文件

    千次阅读 多人点赞 2020-04-19 13:38:22
    文章目录一.M文件1.脚本文件和函数文件的区别二.M函数文件1.创建方法2.文件形式2.函数形参及注释3.函数的调用4.函数变量5.主函数、函数三.函数句柄 一.M文件 首先,要了解脚本文件和函数文件的区别,在MATLAB中...

    一.M文件

    首先,要了解脚本文件和函数文件的区别,在MATLAB中编写的程序文件称为M文件,M文件分为脚本文件和函数文件俩种。

    1.脚本文件和函数文件的区别

    脚本文件:没有输入参数和输出参数,运行脚本文件实际上就是顺序执行脚本文件中的控制流,脚本文件适合小规模的运算。脚本文件中的变量都是全局变量。

    函数文件:有输入参数和输出参数,由function引导,用户可以自己创建函数、调用函数,就像MATLAB内嵌函数一样使用,函数中的变量一般是局部变量,也可以声明全局变量。函数是MATLAB的主流编程方式。

    脚本文件和函数文件的区别如图:
    在这里插入图片描述

    二.M函数文件

    1.创建方法

    脚本文件的创建方法就是,新建一个脚本,在里面编写程序就可以了。
    函数文件的创建也是类似的,首先创建一个函数文件,文件名要和函数名一致,然后在文件中编写函数,以function为引导,函数文件中必须包括一个主函数,也可以包含子函数、内嵌函数等等…这和C语言的函数有类似之处。

    2.文件形式

    函数文件以function为引导,表明这个文件是一个函数文件,格式如下:

    function  [ 输出形参 ] = 函数名[ 输入形参 ]
    %注释
    内容
    

    例如:
    在这里插入图片描述
    特别注意一点,函数文件名要和主函数的名字一致。

    2.函数形参及注释

    函数形参
    函数文件有输入形参和输出形参,在声明函数的时候就确定了形参的个数,输入形参以圆括号()表示,输出形参以方括号[]表示(注:输出形参为一个的时候可以不用[])。而且每个形参的位置都是对应的,当没有输入参数或者输出参数时,就不用写了,相当于C语言中的void。
    另外调用函数的时候,有时需要传入参数和传出参数,参数的位置必须和形参的位置相对应,这点和C语言中的形参使用几乎一样。

    注释
    当我们调用MATLAB内部函数时,使用help等可以查询函数的使用规则和函数功能,用户编写的函数在注释后也可以通过help进行查询,这样就可以构成函数的在线帮助文本了。
    具体的注释规则如图:
    在这里插入图片描述

    3.函数的调用

    写好函数后总要使用的嘛,函数文件自己不可以直接运行,需要用户调用才可以,用户调用的时候格式如下:

    [ 输出实参 ] = 函数名( 输入实参 )
    

    注意这里的参数就不同于上面声明函数时的参数,声明函数是形参,调用函数是实参,实参必须要有确定的值。
    还有,实参的个数和位置要和形参对应
    例如:
    在这里插入图片描述

    4.函数变量

    函数运行的时候会产生一些变量,我们知道,在命令行和脚本文件下产生的变量都是放在主变量工作区的,也就是全局变量。
    但是函数内部产生的是局部变量,除非特殊说明为全局变量,局部变量会在函数调用完毕后随函数的结束而清除,当然,也可以通过函数返回值来使变量传出函数,从而保存下来(或者声明为全局变量)。

    声明一个变量为全局变量时格式为:

    global 变量1 变量2
    

    注意:变量之间必须使用空格来隔开,不能用逗号!

    5.主函数、子函数

    一般函数文件中第一个函数就是主函数,主函数的函数名也和函数文件名一致。 调用一个函数首先执行的就是主函数了,这一点和C语言中的main函数有相似之处。

    对应主函数,在一个函数文件中也会有子函数,子函数可以被主函数调用、被子函数调用。子函数也由function来引导,子函数的调用和位置无关!
    例如:
    在这里插入图片描述

    三.函数句柄

    当用户编写了一个函数的时候,要调用此函数时,需要严格按照规定给出函数调用的格式,还要写正确函数名,但是有时候函数名字比较麻烦。而且,最重要的一点:MATLAB每次调用函数的时候都要从所有路径中去寻找对应函数,这就导致程序运行较慢!!!

    使用函数句柄可以解决这种问题,什么是函数句柄呢?我们可以类比PC中程序的快捷方式来理解,要启动一个程序,计算机就要从硬盘中找启动程序(感觉有点像大海捞针)只不过计算机运行速度飞快,可以比较快找到,而快捷方式就相当于指定了程序的启动地址,使计算机可以直接去启动程序。
    函数句柄也是,使用函数句柄调用函数的时候,速度就比直接调用函数快了,而且使用函数句柄还可以给函数句柄重新命名,对函数句柄的操作就相当于对函数的操作!

    定义函数句柄的常用方式就是:

    Handle = @FunctionName
    

    直接句柄名=@函数名 就可以,例如:
    在这里插入图片描述

    展开全文
  • ADDCOPYRIGHT(目标,更新,YEAR_OR_STRING,ORG,INFODISP) ADDCOPYRIGHT 添加或修改指定文件夹以及文件夹中的 M 文件或所有 M 文件的版权信息。 该程序最初由 Raymond Norris 编写,并经过修改以添加以下概述...
  • vs2015调用matlab .m文件函数

    千次阅读 2018-06-11 15:56:25
    步骤一:1,mex -setup设置编译器C++2,mbuild -setup设置编译器C++步骤二:1,写matlab文件,需要将主文件写成函数的形式,即使主文件调用了其他函数,在后面的mcc中依然会编入dll中,故不需要担心, 例子:主...
  • %调用格式: % %[pathstruct,pathstr]=listfiles('.\','.csv') % %[pathstruct,pathstr]=listfiles('d:\myfiles','.bmp')
  • %当前目录所有文件子目录 %the number of all the files in the current searching folder L=length(allfiles); %the number of folders to be searched on this class k=length(folder); for i=1:1:L if ...
  • 要为单个 Matlab 函数调用创建帮助文件: wg_publish 要为单个目录创建帮助,请使用: wg_publish_dir 为整个项目(包括所有子目录)创建帮助简单地执行: wg_publish_all 要生成相应的索引(内容)页面,请尝试...
  • 对于文件夹中的函数我们需要在程序调用前添加其路径,路径分为绝对路径和相对路径,方便起见写相对路径,值得注意的是我们有时需要修改文件夹的名称或是删除了某些函数,这时我们需要删除已添加路径,以免matlab...
  • matlab当前目录中所有文件名称与路径 matlab当前目录中所有文件名称与路径
  • 7.1MATLAB M文件编辑器

    千次阅读 2016-11-28 21:56:38
    在前面的章节里,都是采用MATLAB界面的命令窗口的MATLAB提示符下输入指令并运行的方式。然而当需要完成的运算比较复杂,需要几十行甚至成百上千行指令来完成时,命令行窗口就...一个M文件包含许多连续的MATLAB指令,这
  • MATLAB-- M文件编程

    2021-05-26 12:03:53
    之前的内容涉及命令行部分的内容只能解决比较简单的问题,输入比较方便,但是遇到比较复杂的问题时,用户就需要使用M文件编程。 M文件 类似一般高级语言,是一种程序化的编程语言,但与它们相比它只是一个简单的...
  • 关于matlab调用一个文件夹内所有的.m文件,包括其内的其他文件夹内所包括的.m文件方法问题:我们在经常打开一个.m文件,系统 默认为添加该文件夹,或者我们经常添加path中set path的add folder,这样就只是该...
  • 在程序前添加代码:addpath(genpath(pwd));将当前文件夹下的所有文件夹都包括进调用函数的目录 ....就是:addpath, genpath两个函数添加 myfiles 和它的子目录到搜索路径中:addpath(genpath('c:/matlab/myfiles'))...
  • MATLAB调用Fortran

    2021-06-18 16:25:17
    matlab调用fortran需要安装fortran编译器,在matlab命令行中键入“mex -setup”,系统报错,显示: “错误使用 mex 未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w...
  • matlab里.m文件分执行文件和函数文件 在c++中执行文件指:main函数 函数文件:其他所有需要用到的函数 在c++中,函数文件名没有特殊讲究,将文件添加到工程目录便能使用 对函数的要求有三点 函数的完整文件 输入...
  • 使用matlab调用摄像头拍照并发到邮箱-sendemail.m  之前在网上看到有用matlab调用摄像头的,也有用matlab发送电子邮件的,所以突发奇想,何不将这两者结合起来,即使用matlab先调用摄像头拍照,再将照片发到邮箱...
  • find_unused_files 检查与输入函数位于同一目录中的所有文件,包括子目录。 然后它打印输入函数未调用文件列表。 示例: find_unused_files('foo') 将调用函数 foo 并打印 foo 函数未调用文件列表。
  • Matlab调用python

    千次阅读 2019-12-02 21:42:55
    1 在进入Matlab后,首先在主窗口点击 设置路径,添加python的安装目录(选择“添加并包含文件夹”),就可以自动添加python目录下的路径。或者通过以下命令也可实现。 pyversion \python解释器路径 打开MATLAB, 输入...
  • pythonGUI调用matlab并打包成可执行文件的解决方法

    千次阅读 热门讨论 2019-07-20 14:17:33
    使用python调用matlab打包成exe文件首先要会的就是---------使用python调用matlab程序 说到使用python调用matlab啊,似乎网上有多种解决方案 1.调用python的库mlab mlab似乎是一个python库和opencv什么一样的,...
  • MATLAB读取主文件夹内所有子文件及包含特定字符的所有文件。Python的os.walk()函数就能完成这个任务,但MATLAB自带的dir()只能搜索当前文件夹内的文件夹及文件,所以自己写了这么一个函数(利用递归的思想)。在这里...
  • MATLAB--基于BP神经网络的手写数字识别

    千次阅读 多人点赞 2020-03-06 21:12:13
    MATLAB–基于BP神经网络的手写数字识别 在干活的过程中整理下来的,希望对大家有帮助。 手写数字识别技术作为图像处理和模式识别中的研究热点,在大规模数据统计(如行业年检、人口普查等)、票据识别、财务报表、...
  • 如题,当同一文件夹下有大量的文件,而你却被告知去逐一修改文件名的时候,或许你能够凭借多年单身的手速展现一波骚操作;这种办法可以用,但是没必要,你完全可以摸鱼到下班前3分钟,然后1分钟修改文件名,一分钟...
  •  pcode yourfile.m
  • % 大致思路如下: % 遍历track_data路径下所有文件,利用foreachDir函数,查到符合要求的文件,在这里是'w001001.adf' % 目的是转换文件'w001001.adf'格式成.txt文件输入到track_out...% 调用'gdal_translate.exe',...
  • 如果你运行它,它会在当前目录中创建一个名为“funct_nam_dir”的子目录,并将主函数和所有用户编写的子函数复制到目录中。 然后您可以创建一个 zip 文件或只是复制目录并将完整目录提供给该人,他们应该能够毫无...
  • 记录改写MATLAB .m文件为mex文件经过

    千次阅读 2018-04-09 10:48:28
    1、新建项目,项目命名,选择 dll,空项目 2、在源文件添加.def文件,写入语句: ...3、添加 .cpp文件,写...(1) C/C++-常规-附加包含目录-添加路径”.\extern\include“——自己找到MATLAB对应安装...
  • matlab批量处理excel(CSV)文件数据

    万次阅读 多人点赞 2019-01-29 21:51:25
    今天是2019-1-29,参加完2019年美国大学生数学建模竞赛,小伙伴都回家了,就我一个人在寝室,太无聊了,就把在比赛中遇到的excel批处理,写一下思路(ps:其实我在比赛中利用的是SQLServer数据库和matlab相结合的数据...

空空如也

空空如也

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

matlabm文件调用子目录

matlab 订阅