码迷,mamicode.com
首页 > 其他好文 > 详细

20-matlab全排列-函数调用

时间:2019-04-20 00:13:12      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:数据   end   大数据   提高   代码   输出   nbsp   排列   style   

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

  

 

20-matlab全排列-函数调用

标签:数据   end   大数据   提高   代码   输出   nbsp   排列   style   

原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10739443.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!