• 20-matlab全排列-函数调用


    matlab中global的用法

    Matlab 中子函数不传参直接调用主函数global变量方法  
    在一个m文件里要调用一个函数(自定义的),但是我希望这个函数能利用并修改workspace中的变量(m文件中的),可是函数的变量全是局部的,无法修改工作区的变量,该怎么办?

    同时在“函数(自定义的)”和m文件中需要使用修改的变量申明为全局变量就可以了。就是变量前面加GLABAL
    例如:
    main.m
    clc;clear

    global Mat1

    Mat1=5;
    b=add(3);

    子函数 add.m
    function sum=add(x)
    global Mat1;
    sum=Mat1+x;

    输出结果: b=8

    使用golbal的优点:

    1 传递大数据的参数
      如果通过函数传参数的方式的话,系统会浪费过多的时间在复制数据的时间上,如果采用global的方式共享数据的话代码的效率会大大提高

    2 过多的常量需要传递
      如果每个量都作为函数函数的参数传递的话,代码参数列表就很长,如果采用global的话代码的可读性提高,函数调用也方便
    ---------------------
    全排列函数:1到4的全排列

    y_quanpailei.m:
    function y_quanpailei(ct)
        global ans1 a visit;
        if ct == 4
            a
            ans1 = ans1 + 1;
            return
        end
        for i = 1:4
            if visit(i) == 0
                a(ct+1) = i;
                visit(i) = 1;
                y_quanpailei(ct + 1);
                visit(i) = 0;
            end
        end
    end
    

     test.m

    clc;
    clear;
    global ans1  a  visit;
    ans1 = 0;
    a = zeros(1,4);
    visit = zeros(1,4);
    y_quanpailei(0)
    ans1
    

      

  • 相关阅读:
    最短路打印路径
    hdu1874(dijskstra算法和floyd算法)
    最短路径(Dijkstra算法)
    kruskal算法模板(续)
    kruskal算法模板
    最小生成树prim算法
    hdu1879(并查集)
    hdu1875 并查集
    top 1 1
    mvc 母版页中登录注册和问候的处理
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10739443.html
Copyright © 2020-2023  润新知