M文件中变量的检测与传递

可变数量的输入输出变量(varargin,vararout):

Matlab的输入输出变量数量可变,并具有以下特点:

  1. 可变输入输出变量必须在正常变量之后
  2. varargin和vararout本身为元胞数组
  3. 在函数调用时,会优先把变量赋予正常变量,在赋予varargin和vararout
  4. 可以使用vargin和varout获取实际的输入输出参数数量

例:

 function varargout = spirallength2(d,n,varargin)

 % 画出螺旋线或螺旋条带

 % d螺旋的旋距

 % n:螺旋的圈数

 % varargin可输入变量第一个值可改变螺旋大小,之后的参数设定属性Nin=length(varargin)+;      %Nin为输入变量的长度+

 if nargout>                 %输出参数多于一个时报错

     error('Too many output arguement!');

 end

 j=sqrt(-);

 phi = :pi/:n**pi;

 amp = :d/:n*d;

 spir = amp .*exp(j*phi);    %准备数据

 if nargout==

     switch Nin

         case               %输入变量只有d,n

             plot(spir,'b');

         case               %可变输入变量varargin有一个varargin{}

             d1=varargin{};

             amp1=(:d/:n*d)+d1;

             spir1=amp1.*exp(j*phi);

             plot(spir,'b');

             hold on;        %开启绘图保留,原来的绘图不会被删除

             plot(spir1,'b');

             hold off;       %关闭绘图保留

         otherwise

             d1=varargin{};

             amp1=(:d/:n*d)+d1;

             spir1=amp1.*exp(j*phi);

             plot(spir,varargin{:end});   %使用varargin{}之后传的属性值

             hold on;

             plot(spir1,varargin{:end});

     end

     axis('square')        %坐标轴设置,使用相同长度的坐标轴线。相应调整数据单位之间的增量

 else                       %有一个输出参数的情况

     phi0=:pi/:n**pi;

     amp0=:d/:n*d;

     spir0=amp0 .*exp(j*phi0);

     varargout{}=sum(abs(diff(spir0)));

     if Nin>

         d1=varargin{};

         amp1=(:d/:n*d)+d1;

         spir1=amp1.*exp(j*phi0);

         varargout{}=sum(abs(diff(spir1)));

     end

 end

 end
  1. 在命令行输入:

>> spirallength2(2,2)

输入参数只有d,n,无输出参数

  1. 在命令行输入:

>> spirallength2(2,2,1,'Marker','o')

第三个输入参数’1’使得螺旋线直径加一,第4,5个参数使得螺旋线形状变为’o’

  1. 在命令行输入

>> a=spirallength2(2,2,1,'Marker','o')

有输出参数,可获得螺旋线周长

Matlab M文件变量检测与传递的更多相关文章

  1. matlab mat文件读取和调用

    13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开.13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时 ...

  2. Matlab之文件读写

    读文件:  (0)自己添加 你可以将txt的一些文本数据直接拷贝到matlab窗口,然后保存为mat文件,下次就可以直接采用load函数了. (1)Load load 从Matlab的数据文件.mat ...

  3. MATLAB中文件的读写和数据的导入导出

    http://blog.163.com/tawney_daylily/blog/static/13614643620111117853933/ 在编写一个程序时,经常需要从外部读入数据,或者将程序运行 ...

  4. Visual Studio 控制台应用程序 同时使用OpenCV和matlab mat文件操作

    matalb具有灵活的图像处理,代码编写起来简洁而高效.而OpenCV具有很多成熟的计算机视觉算法,能够处理很多实时的识别处理等问题,而且代码运行起来效率很高.所以如何结合两者之间的优点,是让很多学术 ...

  5. matlab数值数据和变量名

    1.2MATLAB数值数据 l  数值数据类型的分类 l  数值数据的输出格式 l  常用数学函数内部函数 1.数值数据类型的分类 l  整型 l  浮点型 l  复数型 (1)整型 1.数值数据类型 ...

  6. Matlab 读取文件夹中所有的bmp文件

    将srcimg文件下的bmp文件转为jpg图像,存放在dstimg文件夹下 str = 'srcimg'; dst = 'dstimg'; file=dir([str,'\*.bmp']); :len ...

  7. 利用SHELL脚本实现文件完整性检测程序(1.2版更新)

    一..开发背景 因时势所逼,需要对服务器的文件系统实行监控.虽然linux下有不少入侵检测和防窜改系统,但都比较麻烦,用起来也不是很称手.自己琢磨着也不需要什么多复杂的功能,写个脚本应该就可以满足基本 ...

  8. matlab提速技巧(自matlab帮助文件)

    matlab提速技巧(自matlab帮助文件) 1.首先要学会用profiler.1.1. 打开profiler.To open the Profiler, select View -> Pro ...

  9. C++多文件变量

    不要在头文件中定义变量,在头文件中声明变量.定义放在对应的源文件中.其他地方只能用extern声明. 例如: 1 在头文件a.h中声明一个int变量: extern int ix; 2 在源文件a.c ...

随机推荐

  1. [总结] MSF攻击数据库服务

    0x01 攻击Mysql服务 1.1 目标探测 auxiliary/scanner/mysql/mysql_version 常用于内网中的批量mysql主机发现: 1.2 爆破登录 auxiliary ...

  2. 高斯混合模型(GMM)及MATLAB代码

    之前在学习中遇到高斯混合模型,卡了很长一段时间,在这里记下学习中的一些问题以及解决的方法.希望看到这篇文章的同学们对高斯混合模型能有一些基本的概念.全文不废话,直接上重点. 本文将从以下三个问题详解高 ...

  3. 统一异常处理@ControllerAdvice

    一.异常处理 有异常就必须处理,通常会在方法后面throws异常,或者是在方法内部进行try catch处理. 直接throws Exception 直接throws Exception,抛的异常太过 ...

  4. 使用OSCache优化性能,及JPA二级缓存

    1.使用静态化页面技术: 要统计产品的浏览次数: 在<body> <img src="http://www.site.com/data/count.do?productId ...

  5. 推荐一款不错的MarkDown在线编辑器

    StackEdit链接:https://stackedit.io/editor StackEdit可以实现同步编辑预览,如下图展示: 菜单界面 功能包括: 管理多个 MarkDown 文档.可在线或离 ...

  6. Python3基础 tuple(list) 改变list元素的内容时,元组的id值不变

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  7. 必须要注意的 C++ 动态内存资源管理(二)——指针对象简单实现

    必须要注意的 C++动态内存资源管理(二)——指针对象简单实现 四.拷贝类型的资源         上节我们说过,对于图片类型的资源我们有时候往往采用拷贝(如果对于那种公共图片,可能采用唯一副本,提供 ...

  8. 【Java】Swagger快速入门

    Swagger 简介 Swagger 是一套基于 OpenAPI 规范构建的开源工具,可以帮助我们设计.构建.记录以及使用 Rest API.Swagger 主要包含了以下三个部分: Swagger ...

  9. 【Linux】两台服务器ssh免密登录

    背景: 有些场景可能用到两台服务器ssh免密登录.比如服务器自动化部署 开始准备:  服务器A  linux   ip: 192.168.1.1 服务器B  linux  ip: 192.168.1. ...

  10. [LeetCode] 403. Frog Jump 青蛙跳

    A frog is crossing a river. The river is divided into x units and at each unit there may or may not ...