zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    Vue.Draggable 文档总结
    JS深度判断两个对象字段相同
    vue防止按钮在短时间内被多次点击的方法
    设计模式学习-单例模式
    设计模式学习---策略模式
    C#7.0中的解构功能---Deconstruct
    讲一下Asp.net core MVC2.1 里面的 ApiControllerAttribute
    .NET Core 使用RabbitMQ
    IL指令详细表
    redis 4.0.13 -- 哨兵模式
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10739443.html
Copyright © 2011-2022 走看看