精华内容
下载资源
问答
  • smulink可以很方便的搭建系统...Matlabfunction函数框如下: 1、首先定义全局变量globala; 通过EditData 新建变量a,并且属性Scope选择Data store memory 2、通过simulink View-》ModelExplore——》BaseWo...

    smulink 可以很方便的搭建系统模型,通过使用function 可以移植c代码,验证实际的离散系统性能。

    Matlab function函数框如下:

    1、首先定义全局变量global a;  通过Edit Data  新建变量a, 并且属性Scope 选择Data store memory

    2、通过simulink  View-》Model Explore——》Base Workspace 打开全局变量定义框,

    3、新建变量a 并且设置变量是属性,这里设置为 doulbe类型, 初始为0, 实数real。 至此,matlab function 模块中变量,已经定义为全局变量,对于simulink文件可以实现多处调用并且保存数据。

    4、完整的模型如下:

    5、运行后的数据

    展开全文
  • python接口路径设置:在Matlab中设置添加可调用的python接口路径及工具 Matlab命令行查看python版本信息: >> pyversion version: '3.6' executable: 'G:\Anaconda3\python.EXE' library: 'G:\Anaconda3\...

    python接口路径设置:在Matlab中设置添加可调用的python接口路径及工具

    Matlab中命令行查看python版本信息:

    >> pyversion
    
           version: '3.6'
        executable: 'G:\Anaconda3\python.EXE'
           library: 'G:\Anaconda3\python36.dll'
              home: 'G:\Anaconda3'
          isloaded: 0
    

    重新设置为tensorflow或keras库下python:

    >> pyversion G:\Anaconda3\envs\keras\python.exe
    >> pyversion
    
           version: '3.6'
        executable: 'G:\Anaconda3\envs\keras\python.exe'
           library: 'G:\Anaconda3\envs\keras\python36.dll'
              home: 'G:\Anaconda3\envs\keras'
          isloaded: 0
    

    Matlab中命令行python运行测试:

    >> l1=py.list([1,2,3,4])
    l1 = 
      Python list (不带属性)[1.0, 2.0, 3.0, 4.0]
    

    Matlab中命令行导入tensorflow或者keras模块测试:

    >> tf = py.importlib.module("tensorflow")
    

    报错:无法解析名称 py.importlib.module
    解决:更改函数指令
    参考官方文档:Undefined variable “py” or function “py.command”

    tf=py.importlib.import_module('tensorflow')
    

    报错:错误使用 h5>init h5py.h5 (line 41) Python 错误 AttributeError: type object 'h5py.h5.H5PYConfig' has no attribute '__reduce_cython__'
    解决:降低h5py 2.10.0库的版本到2.8.0:
    参考博主文章:一个处女座的程序猿

    启动Anaconda Prompt,命令:pip install h5py==2.8.0
    

    报错:PermissionError: [WinError 5] 拒绝访问: 'g:\\anaconda3\\envs\\keras\\lib\\site-packages\\h5py-2.10.0.dist-info'

    解决:关闭Anaconda Prompt,右键单击“以管理员身份运行”,成功

    Successfully installed h5py-2.8.0
    

    Matlab中再次导入tensorflow或者keras模块测试:

    tf=py.importlib.import_module('tensorflow')
    
    tf = 
    
      Python module - 属性:
    
                                   variable_creator_scope: [1×1 py.function]
                                                  VERSION: [1×6 py.str]
                                         COMPILER_VERSION: [1×14 py.str]
                                        space_to_batch_nd: [1×1 py.function]
                                        ..........
    

    Matlab中tensorflow或keras环境测试:

    测试代码来源:知乎 slassddd

    clc
    % import libs
    tf = py.importlib.import_module('tensorflow');
    np = py.importlib.import_module('numpy');
    % set problem
    a = tf.Variable(np.float32(0.001), pyargs('dtype',tf.float32));
    k1 = tf.placeholder(tf.float32,pyargs('shape',py.None,'name','k1'));
    cost = a^2 + k1*a + 5;
    % set optimizer
    optimizer = tf.train.RMSPropOptimizer(pyargs('learning_rate',0.1)).minimize(cost);
    init = tf.global_variables_initializer();
    % solve
    try
        sess = tf.Session();
        sess.run(init);
        dict = py.dict(pyargs(k1.name,np.array([4])));
        idxr = [];
        costr = [];
        for i = 1:20
            sess.run(optimizer,pyargs('feed_dict',dict));
            a_val = sess.run(a,pyargs('feed_dict',dict));
            cost_val = sess.run(cost,pyargs('feed_dict',dict));
            % 显示信息
            msgstr = ['迭代%d次:变量a=%f,cost=%f\n'];
            fprintf(msgstr,i,a_val,cost_val);
            idxr = [idxr i];
            costr = [costr double(cost_val)];
        end
        sess.close()
    catch
        sess.close()
    end
    % plot
    plot(idxr,costr)
    

    环境测试结果:

    在这里插入图片描述

    展开全文
  • MATLAB中调用eemd函数

    万次阅读 多人点赞 2019-07-16 15:18:06
    #MATLAB 中调用EEMD 函数 一般情况添加eemd.m和extrema.m到主函数的同一个文件夹就可直接调用了。 eemd.m是英文注释,解释该函数各个参量的意义以及如何取值。 function allmode=eemd(Y,Nstd,NE) Y为输入,待分解...

    #MATLAB 中调用EEMD 函数

    一般情况添加eemd.m和extrema.m到主函数的同一个文件夹就可直接调用了。

    eemd.m中是英文注释,解释该函数各个参量的意义以及如何取值。
    function allmode=eemd(Y,Nstd,NE)
    Y为输入,待分解的信号;
    Nstd是所加噪声的标准差;
    NE是加入噪声的次数,取值为10-50即可;

    若输入矩阵是kn;
    则输出矩阵n
    (m+1),其中m=fix(log2(N))-1;
    输出矩阵的第一列为原始信号,第2,3…m列是分解出的IMF(本征模态分量),m+1列就是残余分量。

    eemd.m

    function allmode=eemd(Y,Nstd,NE)
    % This is an EMD/EEMD program
    %
    % INPUT:
    % Y: Inputted data;1-d data only
    % Nstd: ratio of the standard deviation of the added noise and that of
    % Y; Nstd = (0.1 ~ 0.4)*std(Y). 
    % NE: Ensemble number for the EEMD, NE = 10-50.
    % OUTPUT:
    % A matrix of N*(m+1) matrix, where N is the length of the input
    % data Y, and m=fix(log2(N))-1. Column 1 is the original data, columns 2, 3, ...
    % m are the IMFs from high to low frequency, and comlumn (m+1) is the
    % residual (over all trend).
    %
    % NOTE:
    % It should be noted that when Nstd is set to zero and NE is set to 1, the
    % program degenerates to a EMD program.(for EMD Nstd=0,NE=1)
    % This code limited sift number=10 ,the stoppage criteria can't change.
    
    % References:
    % Wu, Z., and N. E Huang (2008),
    % Ensemble Empirical Mode Decomposition: a noise-assisted data analysis method.
    % Advances in Adaptive Data Analysis. Vol.1, No.1. 1-41.
    %
    % code writer: Zhaohua Wu.
    % footnote:S.C.Su 2009/03/04
    %
    % There are three loops in this code coupled together.
    % 1.read data, find out standard deviation ,devide all data by std
    % 2.evaluate TNM as total IMF number--eq1.
    % TNM2=TNM+2,original data and residual included in TNM2
    % assign 0 to TNM2 matrix
    % 3.Do EEMD NE times-----------loop EEMD start
    % 4.add noise
    % 5.give initial values before sift
    % 6.start to find an IMF------IMF loop start
    % 7.sift 10 times to get IMF------sift loop start and end
    % 8.after 10 times sift --we got IMF
    % 9.subtract IMF from data ,and let the residual to find next IMF by loop
    % 6.after having all the IMFs-------------IMF loop end
    % 9.after TNM IMFs ,the residual xend is over all trend
    % 3.Sum up NE decomposition result--------loop EEMD end
    % 10.Devide EEMD summation by NE,std be multiply back to data
    
    %% Association: no
    % this function ususally used for doing 1-D EEMD with fixed
    % stoppage criteria independently.
    %
    % Concerned function: extrema.m
    % above mentioned m file must be put together
    
    %function allmode=eemd(Y,Nstd,NE)
    
    %part1.read data, find out standard deviation ,devide all data by std
    xsize=length(Y);
    dd=1:1:xsize; 
    Ystd=std(Y);
    Y=Y/Ystd;    
    
    %part2.evaluate TNM as total IMF number,ssign 0 to N*TNM2 matrix
    TNM=fix(log2(xsize))-5;   % TNM=m
    TNM2=TNM+2;               
    for kk=1:1:TNM2,
        for ii=1:1:xsize,
            allmode(ii,kk)=0.0;  
        end
    end
    
    %part3 Do EEMD -----EEMD loop start
    for iii=1:1:NE, %EEMD loop NE times EMD sum together
    
    %part4 --Add noise to original data,we have X1
        for i=1:xsize,
            temp=randn(1,1)*Nstd; % add a random noise to Y
            X1(i)=Y(i)+temp;
        end
    
    %part4 --assign original data in the first column
        for jj=1:1:xsize,
            mode(jj,1) = Y(jj); % assign Y to column 1of mode
        end
    
    %part5--give initial 0to xorigin and xend
        xorigin = X1;   % 
        xend = xorigin; %
    
    %part6--start to find an IMF-----IMF loop start
        nmode = 1;
    
        while nmode <= TNM,
        xstart = xend; %last loop value assign to new iteration loop
                       %xstart -loop start data
        iter = 1;      %loop index initial value
    
    %part7--sift 10 times to get IMF---sift loop start
            while iter<=10,  
                [spmax, spmin, flag]=extrema(xstart); %call function extrema
                                                      %the usage of spline ,please see part11.
                upper= spline(spmax(:,1),spmax(:,2),dd); %upper spline bound of this sift
                lower= spline(spmin(:,1),spmin(:,2),dd); %lower spline bound of this sift
                mean_ul = (upper + lower)/2;            %spline mean of upper and lower
                xstart = xstart - mean_ul;              %extract spline mean from Xstart
                iter = iter +1;
            end
    
    %part8--subtract IMF from data ,then let the residual xend to start to find next IMF
        xend = xend - xstart;      
        nmode=nmode+1;              
    
    %part9--after sift 10 times,that xstart is this time IMF
        for jj=1:1:xsize,
            mode(jj,nmode) = xstart(jj);  
        end
    end
    
    %part10--after gotten all(TNM) IMFs ,the residual xend is over all trend
    % put them in the last column
        for jj=1:1:xsize,
            mode(jj,nmode+1)=xend(jj);
        end
    
    %after part 10 ,original + TNM IMFs+overall trend ---those are all in mode
        allmode=allmode+mode;   
    end  %part3 Do EEMD -----EEMD loop end
    
    %part11--devide EEMD summation by NE,std be multiply back to data
    allmode=allmode/NE;    
    allmode=allmode*Ystd;  
    
    

    extrema.m

    % This is a utility program for significance test.
    %
    %   function [spmax, spmin, flag]= extrema(in_data)
    %
    % INPUT:
    %       in_data: Inputted data, a time series to be sifted(被筛选);
    % OUTPUT:
    %       spmax: The locations (col 1) of the maxima and its corresponding
    %              values (col 2)
    %       spmin: The locations (col 1) of the minima and its corresponding
    %              values (col 2)
    %
    % References can be found in the "Reference" section.
    %
    % The code is prepared by Zhaohua Wu. For questions, please read the "Q&A" section or
    % contact
    %   zwu@fsu.edu
    %
    function [spmax, spmin, flag]= extrema(in_data)
    
    flag=1;
    dsize=length(in_data);
    
    spmax(1,1) = 1;
    spmax(1,2) = in_data(1);
    jj=2;
    kk=2;
    while jj<dsize,
        if ( in_data(jj-1)<=in_data(jj) & in_data(jj)>=in_data(jj+1) )
            spmax(kk,1) = jj;
            spmax(kk,2) = in_data (jj);
            kk = kk+1;
        end
        jj=jj+1;
    end
    spmax(kk,1)=dsize;
    spmax(kk,2)=in_data(dsize);
    
    if kk>=4
        slope1=(spmax(2,2)-spmax(3,2))/(spmax(2,1)-spmax(3,1));
        tmp1=slope1*(spmax(1,1)-spmax(2,1))+spmax(2,2);
        if tmp1>spmax(1,2)
            spmax(1,2)=tmp1;
        end
    
        slope2=(spmax(kk-1,2)-spmax(kk-2,2))/(spmax(kk-1,1)-spmax(kk-2,1));
        tmp2=slope2*(spmax(kk,1)-spmax(kk-1,1))+spmax(kk-1,2);
        if tmp2>spmax(kk,2)
            spmax(kk,2)=tmp2;
        end
    else
        flag=-1;
    end
    
    
    msize=size(in_data);
    dsize=max(msize);
    xsize=dsize/3;
    xsize2=2*xsize;
    
    spmin(1,1) = 1;
    spmin(1,2) = in_data(1);
    jj=2;
    kk=2;
    while jj<dsize,
        if ( in_data(jj-1)>=in_data(jj) & in_data(jj)<=in_data(jj+1))
            spmin(kk,1) = jj;
            spmin(kk,2) = in_data (jj);
            kk = kk+1;
        end
        jj=jj+1;
    end
    spmin(kk,1)=dsize;
    spmin(kk,2)=in_data(dsize);
    
    if kk>=4
        slope1=(spmin(2,2)-spmin(3,2))/(spmin(2,1)-spmin(3,1));
        tmp1=slope1*(spmin(1,1)-spmin(2,1))+spmin(2,2);
        if tmp1<spmin(1,2)
            spmin(1,2)=tmp1;
        end
    
        slope2=(spmin(kk-1,2)-spmin(kk-2,2))/(spmin(kk-1,1)-spmin(kk-2,1));
        tmp2=slope2*(spmin(kk,1)-spmin(kk-1,1))+spmin(kk-1,2);
        if tmp2<spmin(kk,2)
            spmin(kk,2)=tmp2;
        end
    else
        flag=-1;
    end
    
    flag=1;
    
    
    
    
    展开全文
  • matlab中调用函数

    千次阅读 2019-08-24 19:40:34
    在matlab中,如果是 matlab 自带的函数,则可以按照该函数的格式直接调用;如果是自定义函数,可以将函数写一个文件主文件中调用。 % 文件名为fun.m(注意:文件名需要与函数名一致) function y = fun(x)...

    在matlab中,如果是 matlab 自带的函数,则可以按照该函数的格式直接调用;如果是自定义函数,可以将函数写在一个文件中,在主文件中调用。

    % 文件名为fun.m(注意:文件名需要与函数名一致)
    function y = fun(x)
    y = x.^2;

    下面开始编写主文件(文件名为main.m),并调用函数文件fun.m中的函数fun。

    情况1:函数文件fun.m和主文件main.m在同一目录下,此时直接调用即可。

    a = [1, 2, 3];
    b = fun(a);     % 运行后,b=[1, 4, 9]

    情况2:函数文件fun.m和主文件main.m在不同一目录下,此时需要将函数文件包含进来才可以调用fun函数。
     

    addpath('directory');     % 其中,directory是函数文件fun.m的路径
    a = [1, 2, 3];
    b = fun(a);               % 运行后,b=[1, 4, 9]

     

    展开全文
  • 自己编写了一个s函数,有几个参数引用了自己写的几个函数,脚本可以正确运行,但写成s函数,进行 simulink 仿真的时候,已知提示“too many input auguments”,不知道怎么回事。经过调试发现,把那几个参数换...
  • 执行的时候和C语言一样,只能执行主函数,其他的函数执行主函数时候被调用,唯一区别在于,c可以可以跨文件调用另一文件的任何一个子函数,而matlab的一个.m文件只能调用另一.m文件的主函数,主函数命名最好和m...
  • MATLAB中调用C代码

    千次阅读 2014-12-10 16:06:58
    如果我有一个用C语言写的函数...现在我想要在Matlab中使用它,比如输入: >>a = add(1.1, 2.2)  3.3000 要得出以上的结果,那应该怎样做呢? 解决方法之一是要通过使用MEX文件,MEX文件使得调用C函数和调用Matlab
  • matlab中调用c++函数

    2017-04-12 20:36:14
    MEX文件是一种可在matlab环境中调用的C(或fortran)语言衍生程序,它是可以被matlab解释器自动装载并执行的动态链接程序,类似windows下的dll文件。 (2)在matlab命令窗口选择编译器, mex -setup  
  • 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。允许非商业转载,但应注明作者及出处。 作者:xialulee ... ...如果不会编译Java源码,或者...《Matlab调用ZXing的详细步骤——二维
  • 使用MATLAB过程,我们难免会遇到函数调用函数的情况,外面的主程序的变量我们可以工作区看到,他们的值的变化我们可以清楚的知道,但是主程序中调用的一些函数的变量的值我们却很难知道,此时,我们可以采取...
  • 有时不仅仅是C调用MATLAB文件,MATLAB调用C文件;而需要MATLAB先调用C文件,然后再MEX文件调用MATLAB函数。本文将对这一过程进行讲解。 通过MATLAB调用的MEX 文件添加mexCallMATLAB函数,来实现调用...
  • 我是用的以下matlab函数 function [Theta, Phi, R] = ...其中a1,b1,a2,b2,a3,b3都是4*3的二维数组,并且每个数组里面都是常量,都是数,请问各位大神,如何java调用matlab的基础上实现二维数组的调用,跪求了
  • 如何Python中调用MATLAB

    万次阅读 多人点赞 2018-03-21 10:16:28
    鉴于实验内容需要,不得不找点办法在MATLAB和Python之间建个接口,从Python中调用MATLAB脚本或者是MATLAB的函数。内容不是很难,毕竟现成的接口已经有了,这儿记录一下API使用的一些事项。 注:本篇使用的是...
  • MATLAB函数调用

    千次阅读 2021-01-07 20:57:42
    数学建模 matlab自定义函数 时间 2020年5月10日 ...2.两个文件运行函数:函数定义文件和函数调用文件(函数可脚本文件或命令窗口直接调用),两文件必须放在同一目录下,函数文件名必须与函数名相...
  • Java中调用MATLAB函数

    2017-03-21 14:33:25
    Java中调用MATLAB函数 一.准备工作:配置Java环境,jre版本为1.7;安装MATLAB(2016a版),MATLAB自带jre版本也是1.7(两者一致) *查看MATLAB中jre版本语句:》version –java 二.具体操作步骤 1.MATLAB中: ...
  • 在Matlab中调用C/C++程序<三>

    千次阅读 2013-06-17 10:44:08
    当我们的工程特别大,需要调用许多外部库函数时,直接在Matlab的Command Window运行mex函数就十分的麻烦了。 这时,我们可以使用微软提供的C/C++集成开发环境。 下面将以Visual Studio 2008 SP1为例,...
  • Matlab S-function 使用总结

    万次阅读 多人点赞 2019-05-24 09:45:03
    近期学习电机的智能控制,里面用到了Matlab中的S函数,此先对S-function做一个小结。 S-function模块,位于Simulink/User-Defined Functions模块库,S-function模块及其对话框如下图所示: S-function ...
  • 我现在遇到遇到一个问题,在MATLAB中通过定义简单的函数,例如function resutl=add(a,b),实现 两个整数相加的功能的函数,然后在MATLAB中通过deploytool工具生成COM集,可以放在C#中调用。但是我目前进行的神经网络...
  • python中调用matlab函数

    千次阅读 2019-05-23 18:33:21
    matlab的很多函数有着强大的功能,python中调用matlab函数,无论是计算还是绘图都有巨大的前景,有时间会写写
  • ![图片说明](https://img-ask.csdn.net/upload/201509/15/1442304160_710359.jpg) 请大神们帮帮忙,这个问题怎么解决啊?
  • 调用 matlabfunction函数出现未定义函数的现象 将matlab的默认位置 C:\Users\Administrator\Desktop 改为当前文件所在位置即可。 具体参考 链接: https://blog.csdn.net/wzgl__wh/article/details/62486389. ...
  • Matlab调用.mexw64文件函数报错 Undefined function,如图 ![图片说明](https://img-ask.csdn.net/upload/201611/23/1479886640_957686.png) Mex_OcclusionQueryC.mexw64文件当前目录下,却说找不到是什么原因呢?...
  • Matlab创建文件、function文件和函数调用

    万次阅读 多人点赞 2019-07-08 15:38:08
    想查找相关内容也可页面按ctrl+F搜索文字 一、建立文件 新建脚本,保存后可运行,后缀为.m 二、函数调用 创建ffib.m文件,编写求Fibonacci数列的函数 function 输出形参表=函数名(输入形参表) 注释说明...
  • MATLAB Function 模块使用全局数据

    千次阅读 2019-01-25 18:06:29
    如果出现以下情况,您可能需要 MATLAB Function 模块使用全局数据: 您有多个使用全局变量的 MATLAB® 函数,并且您要从 MATLAB Function 模块中调用这些函数。您有一个使用了大量全局数据的现有模型,您要此...
  • matlab 调用 python

    千次阅读 2019-04-16 17:16:01
    matlab 直接调用 python 文件
  • function使用的是Caller workspace,跟Command Windows使用的Base Workspace不是一个工作空间,它是函数进入执行前开辟,函数调用结束时进行释放。 2. 除了声明全局变量之外(很多使用者都建议不要声明全局变量)...
  • matlab中调用C和cmd命令

    千次阅读 2014-04-13 20:01:07
    Matlab的确是门简单易用的语言,而且有极为丰富的工具箱,网络上也有大把的例子,像一般性的信号处理与画图用matlab方便快捷。跟着文献里面的介绍研究一些处理方法,个人觉得用matlab做较少数据的实验还是很方便的,...
  • matlabfunction在MATLAB中怎么用

    千次阅读 2015-06-03 15:59:12
    举个简单的例子建立一个myfunction.m,然后文件写。 function y=myfunction(a,b) 其中a,b是输入函数的参数,y是函数返回的值。当需要返回多个值时,可以将y看作一个数组,或者直接将函数的开头写成如function ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,125
精华内容 6,850
关键字:

如何在matlab中调用function

matlab 订阅