精华内容
下载资源
问答
  • Matlab函数调用和参数传递

    万次阅读 2016-07-03 20:32:27
    函数调用Matlab中,调用函数的形式如下: [输出参数 1,输出参数 2,…] = 函数名字(输入参数 1,输入参数 2,输入参数 3,…)注意事项: 1. 函数调用的时候,参数顺序应该与定义的时候一样。 2. 函数可以...

    函数调用
    在Matlab中,调用函数的形式如下:
    [输出参数 1,输出参数 2,…] = 函数名字(输入参数 1,输入参数 2,输入参数 3,…)

    注意事项:
    1. 函数调用的时候,参数顺序应该与定义的时候一样。
    2. 函数可以嵌套
    3. 函数可以自己调用自己,实现递归

    例如:
    1)函数文件: power.m
    function [out1, out2] = power(in1, in2, n)
    %pow
    out1 = (in1 + in2)^n;
    out2 = (in1 - in2)^n;
    2) 调用文件
    a = 10;
    b = 8;
    for k = 0:1:10
    [out1[k], out2[k]] = power(a, b, k);
    end

    参数传递
    Matlab函数包含两个特殊变量:nargin,nargout。
    1. nargin
    函数体内的nargin表示输入参数的数目
    2. nargout
    函数体内的nargout表示输出参数的数目

    依据上述的两个参数,可以知道matlab函数的输入输出参数个数。因此,函数可以通过变换输入和输出参数的个数 来实现特定的函数功能。

    end

    展开全文
  • 任务从xing文件中调用wu文件中的函数 wu.m function a= wu(b) a=1+1; end xing.m function c= xing(d) c=wu(2); end 以上是两个文件中的内容 现在我们在命令行运行 输入q=xing(3) 结果输出q=2 ///////////////...
    两个文件wu.m   xing.m
    
    任务从xing文件中调用wu文件中的函数
    
    wu.m
    
    function a= wu(b)
    a=1+1;
    end
    
    xing.m
    
    function c= xing(d)
    c=wu(2);
    end
    
    以上是两个文件中的内容
    现在我们在命令行运行
    输入q=xing(3)
    结果输出q=2
    
    /////////////////////////////////
    
    说点题外话
    function a=b(c)
    a是函数返回值,必须有
    b是函数名,必须和文件名一样
    c是你给该函数传的参数
    
    展开全文
  • MATLAB函数调用

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

    学习Matlab自定义函数使用,并结合所学函数简单修改了一下上周的代码实现了Topsis法。

    1.Matlab语句构成的程序文件称为M文件,以m作为文件的扩展名,分为函数文件和程序文件。

    程序文件即脚本文件,无function;

    函数文件有function,且在第一行或者第一个不是注释的行

    2.两个文件运行函数:函数定义文件和函数调用文件(函数可在脚本文件或命令窗口直接调用),两文件必须放在同一目录下,函数文件名必须与函数名相同。

    1)一个参数:

    定义形式:

     function y=f(x) 
    
              y=x^2; 
    

    2)多个参数:

    多元函数可以看做向量函数(四种形式实现同一题的运算)

    函数定义形式(两个输入两个输出)

    function  [y1,y2]=f1(x1,x2)
    
              y1=x1+x2;
    
              y2=x1-x2;
    
    end
    

    函数调用形式

    [a,b]=f1(2,3)     
    
    函数定义形式(将两个输入合成一个向量)
    
    function  [y1,y2]=f1(x)
    
              y1=x(1)+x(2);
    
              y2=x(1)-x(2);
    
    end
    

    函数调用形式

    [a,b]=f2([2,3])
    

    函数定义形式(将两个输出合成一个向量)

    function y=f3(x1,x2)
    
            y(1)=x1+x2;
    
            y(2)=x1-x2;
    
    end
    

    函数调用形式

    c=f3(2,3)
    

    函数定义形式(将两个输入合成一个向量,将两个输出合成一个向量)

    function  y=f4(x)
    
            y(1)=x(1)+x(2);
    
            y(2)=x(1)-x(2);
    
    end
    

    函数调用形式

    d=f4([2,3])
    

    3)任意多个参数的情况:

    a.参数

    varargin任意多个输入参数
    
    varargout任意多个输出参数
    
    nargin得到实际输入参数个数
    
    nargout得到实际输出参数个数
    

    b.对于输入变量,MATLAB可以识别输入变量的个数,通过nargin来记录当前输入变量个数。通过nargin判断变量个数,然后再写对应的程序

    c.对于输出变量,MATLAB可以根据调用情况来输出结果,根据调用的格式,自动忽略没匹配上的输出结果。

    d.函数做好之后,需要写好说明,否则代码的通用性会很差。matlab自动将函数下的注释当作函数说明,通过help来查看帮助文档

    4)写一个函数计算输入参数之和(输入参数可以是任意多个)

    function y=ssum(varargin)
    
       n=nargin
    
       y=0;
    
       for i=1:n
    
       y=varargin{i}+y;
    
    end
    

    5)对于一组数据 x1,x2,…,xm, 分高优指标、低优指标、中优指标、均优指标,四种标准化方式对数据标准化。(学习代码并理解nargin的用法)

    function [x] = standlize(v,type,q)
    
    %STANDLIZE   对列向量v 进行归一化 返回归一化后的向量 x
    
    %  x = STANDLIZE(v,'low') 对列向量按低优指标进行归一化
    
    %  x = STANDLIZE(v,'high') 对列向量按高优指标进行归一化
    
    %  x = STANDLIZE(v,'middle',q) 对列向量按中优指标进行归一化
    
    %  x = STANDLIZE(v,'between',q) 其中 q = [a , b] 对列向量按均优指标进行归一化
    
    m = length(v);
    
    if nargin==2%两个输入参数,一个是向量V,另一个是指标类型
    
        if strcmp(type,'low') %低优指标
    
            %[strcmp](https://ww2.mathworks.cn/help/matlab/ref/strcmp.html)
    
            for i=1:m
    
                x(i) = (max(v)-v(i))/(max(v)-min(v));
    
            end
    
        elseif  strcmp(type,'high') %高优指标
    
            for i=1:m
    
                x(i) = (v(i)-min(v))/(max(v)-min(v));
    
              end
    
        end
    
    elseif nargin==3
    
            %输入变量有三个,第一个是向量V、第二个是指标类型、第三个是q;
    
            %若为中优指标,q用于存放中间值;
    
            %若为均优指标(即我们所学的区间型指标),q用于存放均优指标的区间( q = [a , b] )。
    
            %因此可结合q的长度来区分中优指标和均优指标。
    
        if strcmp(type,'middle')&&length(q)==1 %中优指标
    
            for i=1:m
    
                 if v(i) < q
    
                    x(i) = 1 - (q-v(i))/max([q-min(v),max(v)-q]);
    
                elseif  v(i) > q
    
                        x(i)=1- (v(i)-q)/max([q-min(v),max(v)-q]);                
    
    else
    
                    x(i) = 1;
    
                end
    
            end
    
        elseif strcmp(type,'between')&&length(q)==2 %均优指标
    
            for i=1:m
    
                if v(i) < q(1)
    
                    x(i) = 1-(q(1)-v(i))/(max([q(1)-min(v),max(v)-q(2)]));
    
                elseif v(i) > q(2)
    
                    x(i) = 1-(v(i)-q(2))/(max([q(1)-min(v),max(v)-q(2)]));
    
                else
    
                    x(i)=1;
    
                end
    
            end
    
        end
    
    end
    
    x = reshape(x,size(v));
    
            %访问链接查看[reshape](https://blog.csdn.net/weixin_33805557/article/details/94506302)
    
            
    end  
    

    简单了解matlab的绘图函数(条形图)

    % clear all;
    
    data=S;%代入数据
    
    b=bar(data,'BarWidth',0.6);%可以直接设置条形图的宽度
    
    grid on;
    
            %grid是显示或隐藏坐标轴网格线,grid on是打开网格,grid off是关闭网格。
    
    set(gca,'XTick',1:25,'XTickLabel',{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y'})%设置横坐标数值
    
    for i = 1:25
    
    text(i,S(i)+0.1,num2str(data(i)),'VerticalAlignment','middle','HorizontalAlignment','center','FontSize',12);%为条形图添加数标
    
    end
    
    set(gca,'FontSize',9);%设置字体大小
    
    xlabel('评价对象/河流');%横坐标标签
    
    ylabel('评分');%纵坐标标签
    
    axis([0 26 0 0.1]);%设置坐标轴显示范围
    
            %axis一般用来设置axes的样式,包括坐标轴范围,可来读比例等,
    
             %这儿用来设置坐标轴的范围,axis([xmin xmax ymin ymax])
    
    展开全文
  • 数字信号处理使用MATLAB函数调用

    千次阅读 2007-09-19 23:03:00
    使用MATLAB编制.M函数文件,MATLAB 是最优秀的科学计算工具(个人观点),使用MATLAB编程处理数字信号更容易,简单,但是有时会用到子函数的调用,使用MATLAB进行子函数调用可以,在MATLAB的路径如WORK 中添加.M函数文件,...

    数字信号处理使用MATLAB,使用MATLAB编制.M函数文件,MATLAB 是最优秀的科学计算工具(个人观点),使用MATLAB编程处理数字信号更容易,简单,但是有时会用到子函数的调用,使用MATLAB进行子函数调用可以,在MATLAB的路径如WORK 中添加.M函数文件,MATLAB可以自动调用,如果多个函数写在一个.M文件里,MATLAB会选取主函数,目前MATLAB版本更新很快,各种版本可能要求不同,有的是需要如下格式:

          function []=f1(..)

                  .............

               function []=f2(....)

                    ..............

                            function []=f3(......)

                                    ...........

                                              end

                                      end

                               end

    有的版本不需要用END 语句,如下:

    function r=fs(x1,y1)
       global c1;
       c1=x1;
       r=x1+y1+f2(2,2)+f3(2,2);
     
       function m=f2(x2,y2)
       global c1;
       fprintf('%d',c1);
       m=x2+y2+c1;
      
            function p=f3(x3,y3)
            global c1;
         p=x3+y3+c1;

    但要注意MATLAB执行到被调用函数的时候进入被调用函数空间,此时要把此函数所需要的变量声明为全局变量,或是在被调用的函数中再重新声明一次变量也可以.如下一个离散时间信号的移序相加和相乘的源程序:

    function [y,m]=yijia1(x,n)
     n=-2:10;
     x=[1:7,6:-1:1];
     [x1,n1]=sigshift(x,n,5);
    [x2,n2]=sigshift(x,n,-4);
    [y,m]=sigadd(2*x1,n1,-3*x2,n2);
    subplot(2,2,1);stem(m,y);
    [x3,n3]=sigfold(x,n);[x3,n3]=sigshift(x3,n3,3);
    [x4,n4]=sigshift(x,n,2);[x4,n4]=sigmult(x,n,x4,n4);
    [z,k]=sigadd(x3,n3,x4,n4);
    subplot(2,2,2);stem(k,z);
    function [y,n]=sigfold(x,n)
    n=-2:10;
    x = [1:7,6:-1:1];
    y=fliplr(x);n=-fliplr(n);
    function [y,n]=sigshift(x,m,n0)
     n=-2:10;
     x=[1:7,6:-1:1];
    n=m+n0;y=x;
    function [y,n]=sigadd(x1,n1,x2,n2)
     n=-2:10;
     x=[1:7,6:-1:1];
    n=min(min(n1),min(n2)):max(max(n1),max(n2));  
    y1=zeros(1,length(n)); y2=y1;                
    y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;    
    y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;    y=y1+y2;
    function [y,n] = sigmult(x1,n1,x2,n2)
    n=-2:10;
     x=[1:7,6:-1:1];
    n = min(min(n1),min(n2)):max(max(n1),max(n2));  
    y1 = zeros(1,length(n)); y2 = y1;                
    y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;    
    y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;   
    y = y1.*y2;

    其中,信号的移动,反折,相加,相乘都编写成响应的函数来处理,减少了WORK路径下的杂乱不堪.

     

     

    展开全文
  • 如何将实验结果在matlab中可视化...1)首先设置环境变量,运行tomcat,Eclipse等都需要依靠环境变量JAVA_HOME,Path,classpath,具体的设置可以参考这里为了使在matlab中将.m函数编译为jar包,还需要在classpath中添...
  • 忽然感觉用python的频率越来越大了,是因为python高层次抽象太方便了,在运行fast RCNN的时候OP算法选的是Edge_Boxes 是matlab的 所以就涉及到了python调用Matlab的问题。在网上搜了一下,下面是解决方法: 最后给...
  • matlab 函数调用

    千次阅读 2012-01-03 16:32:59
    每个M文件中的第一个函数为主函数,主函数可以被该文件之外的其它函数调用。 主函数可以调用文件外的函数和文件内的子函数。 子函数 一个M文件可以包含多个函数,除主函数之外的其它函数称为子函数。子...
  • matlab工具箱函数调用

    2019-10-30 16:23:09
    matlab里工具箱优化函数fmincon的程序代码如何直接调用M文件中,之后我想用yalmip来求解。 还是说只能自己在M文件中来按照格式编辑,从而调出fmincon函数。如...
  • 用Java调用matlab的函数用Java调用matlab的函数时,不管matlab函数如何编写(如:有不同的多个输入参数),但在通过deploytool工具将该.m函数build后,生成.jar文件,其中的java类中只包含三个同名的固定接口的方法,...
  • 最近几天尝试使用Python调用Matlab文件,按照官方教程来,总出现找不到对应的函数或者文件。Python文件:import matlab.engine eng = matlab.engine.start_matlab() ret = eng.triarea(1.0,5.0) print(ret)Matlab ...
  • Matlab是一个强大的数学计算/仿真工具,其内置了很多实用的现成的函数,而且我们经常也自己定义很多m函数。但在很多情况下,我们不得不使用VC编程。那么,如何在VC中利用matlab的资源呢? 在这里我简要的以一个简单...
  • 一、matlab版本必须支持java在command 模式下面运行deploytool,如果支持该命令即可使用二、matlab中function的书写%定义一个函数operation(a,b),求a与b的加减乘除运算,并返回结果%函数定义function 输出变量列表[s...
  • matlab饱和函数m文件

    2018-06-04 16:39:50
    简单的饱和函数m文件,在matlab下可以调用,实现matlab下运行饱和函数的作用
  • 在一个m文件里要调用一个函数(自定义的),但是我希望这个函数能利用并修改workspace中的变量(m文件中的),可是函数的变量全是局部的,无法修改工作区的变量,该怎么办? 同时在“函数(自定义的)”和m文件中...
  • http://www.cnblogs.com/duanp/archive/2008/11/29/Matlab-GUIDE.html函数调用在一个m文件中,可以定义多个函数,但是文件名一定要与第一个函数(主函数)一致,该文件中其他函数则为本文件的私有函数,外部不可访问...
  • 第一个问题正常来说跟第二个问题时一样的,一般你只会考虑这个函数是否被同文件夹的.m文件调用,而不会把整个硬盘给遍历一次。
  • 函数调用是使主程序简明清晰的重要工具在很大程度上简化了程序的复杂程度也方便于不同程序使用相同模块的调用下面主要介绍 函数文件+调用命令文件需单独定义一个自定义函数的M文件 这种方法很简单定义好输入输出就...
  • 最近几天尝试使用Python调用Matlab文件,按照官方教程来,总出现找不到对应的函数或者文件。Python文件:import Matlab 函数 文件:function两个文件放置到相同文件夹,运行后总是提示:MatlabExecutionError: ...
  • 今天小编就为大家分享一篇python调用matlabm自定义函数方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 1函数文件+调用命令文件需单独定义一个自定义函数M文件; ?2函数文件+子函数定义一个具有多个自定义函数M文件 ?3Inline:无需M文件直接定义 ?4Syms+subs?无需M文件,直接定义 ?5字符串+subs无需M文件,直接定义. 6...
  • matlab调用函数

    2019-08-24 19:40:34
    matlab中,如果是 matlab 自带的函数,则可以按照该函数的格式直接调用;如果是自定义函数,可以将函数写在一个文件中,在主文件中调用。 % 文件名为fun.m(注意:文件名需要与函数名一致) function y = fun(x)...
  • 环境准备1.机器上有Eclipse 3.1和Matlab 2007a2.机器的环境变量设置(1)JAVA_HOME (JDK...用getenv JAVA_HOME在Matlab的命令窗口中试验,看看得到的返回值正确方可说明其对Matlab生效了。(2)Classpath添加matlabInst...
  • VS调用Matlab函数.docx

    2019-07-19 17:21:02
    Matlab的.m文件生成动态链接库,然后在VS的工程项目中调用动态链接库。可以完美实现VC调用Matlab函数
  • 鉴于C翻译成matlab比较麻烦运行又慢,最好的方式是混合编程,将C++程序封装好供matlab直接调用,以方便在matlab上进行后续的研究工作。 声明:仅供学习交流之用。 本文件只是封装好的mex文件,不是具体的matlab代码...
  • 我有一个名为“calculate_K_matrix.m”的matlab函数文件'包含以下代码:function K = calculate_K_matrix(A, B, n)K = place(A, B, eigs(A)*n)end我可以这样从matlab调用它:^{pr2}$但当我尝试使用matlab引擎API从...
  • 在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在MatlabM文件中,直接调用Java类。这种方式可以表示为Java--> Matlab( m, Java),即整个程序由Java启动。那如何使用Matlab直接调用Java的...
  • matlab中,一个m文件中只能有一个主函数,即与m文件同名的函数,可以有其他多个函数,但都不是主函数。 函数调用分为直接调用和间接调用两种,直接调用只允许同一个m文件中的函相互调用;但函数句柄(间接调用)...
  • Matlab函数定义和调用 Matlab 自定义函数的五种方式 命令文件/函数文件+ 函数文件 多个 M 文件 自定义函数的五种方式 函数文件 + 子函数 一个 M 文件 inline 无需 M 文件 符号表达式 + subs 方式 无需 M 文件 字符串...

空空如也

空空如也

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

matlabm函数调用

matlab 订阅