脚本和函数

Posted asahilikka

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本和函数相关的知识,希望对你有一定的参考价值。

脚本和函数

脚本:

特点:按照文件中所输入的指令执行,一段matlab指令集合。运行后,运算过程产生的所有变量保存在基本工作区。可以进行图形输出,如plot()函数。

举例:

脚本文件ex4_15.m:

array=zeros(1,32);

for n=3:32                      %3-32递增的循环

    array(n)=rank(magic(n));

end

array;

bar(array)

 

 

相关函数(超链接显示详细内容):

零矩阵X = zeros(n) 返回一个 n×n 的全零矩阵。

 

幻方矩阵M = magic(n) 返回由 1 到 n2 的整数构成并且总行数和总列数相等的 n×n 矩阵。阶次 n 必须为大于或等于 3 的标量。


求矩阵的秩k = rank(A) 返回矩阵 A 的秩。

条形图:bar(y) 创建一个条形图,y 中的每个元素对应一个条形。如果 y 是矩阵,则 bar 根据 y 中的行对条形分组。

 技术图片

 

 

 

函数:

  特点:以function开始的m文件。函数文件定义的变量为局部变量,函数执行完后清除。函数是一个“黑箱”,把数据输入进行加工处理再输出。

function [y1,...,yN] = myfun(x1,...,xM)

 

  实例:

  函数文件average.m

function y=average(x)

[a,b]=size(x);

if~((a==1)|(b==1)|((a==1)&(b==1)))     

%判断是否为向量 a,b至少有一个为1

    error(必须输入向量)

end

y=sum(x)/length(x);

 

 

function:函数声明

y:输出参数(可以为多或者无)

x:输入参数(可以为多或者无)

 

相关函数(超链接显示详细内容):

  数组大小sz = size(A) 返回一个行向量,其元素包含 A 的相应维度的长度。例如,如果 A 是一个 3×4 矩阵,则 size(A) 返回向量 [3 4]sz 的长度为数组的维度。如果 A 是表或时间表,则 size(A) 返回由表中的行数和变量数组成的二元素行向量。

  引发错误并显示消息:error(‘XXX’)

 

典型规范的M函数文件总结:

  1. 函数定义行:function引导,函数名与文件名相同,定义输入输出参数。
  2. H1行:紧随函数声明的第一个注释行,供lookfor查询使用。(包括大写的函数文件名和运用关键词简要描述的函数功能)
  3. 帮助文本:%开头的注释,通常包括输入输出的变量含义及调用说明
  4. 函数体:实现功能的matlab命令

 

规范文件[庄1] (spirallength.m)实例:

function spir_len = spirallength(d,n,lcolor) 
% circle plot a circle of radius as r in the provided color and calculate
% its area 用提供的颜色绘制一个半径为r的圆,并计算其面积
% d:螺旋的旋距
% n:螺旋的圈数
% lcolor:画图线的颜色
% spir_len:螺旋的周长
% spirallength(d,n):蓝色为预设参数的螺旋线
% spirallength(d,n,lcolor):利用lcolor颜色为参数的螺旋线
% spir_len = spirallength(d,n):计算并返回螺旋线周长,利用蓝色为参数的螺旋线
% spir_len = spirallength(d,n,lcolor):计算并返回周长,利用lcolor颜色为参数的螺旋线
%编写于2019.6.4 庄林武

if nargin>3               %nargin为调用参数个数
    error(输入参数过多!);
elseif nargin == 2
        lcolor= b;      %输入参数只有两个,不包括颜色信息,设置颜色为蓝色
end
j=sqrt(-1);
phi = 0:pi/1000:n*2*pi;
amp = 0:d/2000:n*d;
spir = amp .*exp(j*phi);
if nargout == 1           %nargout为调用函数返回的参数个数
    spir_len =sum(abs(diff(spir)));
    fill(real(spir),imag(spir),lcolor)    %real(x)复数x的实部 imag(x)复数x的虚部
elseif nargout == 0
     plot(spir,lcolor)
else
    error(输入变量过多);
end
axis(square)
        

 

相关函数(超链接显示详细内容):

平方根B = sqrt(X) 返回数组 X 的每个元素的平方根。对于 X 的负元素或复数元素,sqrt(X) 生成复数结果。

 

指数Y = exp(X) 为数组 X 中的每个元素返回指数 ex。对于复数元素 z = x + iy,它返回以下复指数ez=ex(cosy+isiny) .

 

   差分和近似导数Y = diff(X) 计算沿大小不等于 1 的第一个数组维度的 X 相邻元素之间的差分:

  数组元素总和:S = sum(A) 返回 A 沿大小不等于 1 的第一个数组维度的元素之和。

 

  填充的二维多边形:fill(X,Y,C) 根据 X 和 Y 中的数据创建填充的多边形(顶点颜色由 C 指定)。C 是一个用作颜色图索引的向量或矩阵。

 

  二维线图:plot(Y,LineSpec) 设置线型、标记符号和颜色。

 

  设置坐标轴范围和纵横比:axis(limits) 指定当前坐标区的范围。以包含 4 个、6 个或 8 个元素的向量形式指定范围。


 [庄1]理解实例需要了解螺旋图数学原理的画法(待解决)

以上是关于脚本和函数的主要内容,如果未能解决你的问题,请参考以下文章

脚本和函数

matlab,简述脚本M文件和函数M文件的区别?

linux 脚本 之 函数篇

shell脚本的函数介绍和使用案例

Bash脚本之函数定义和调用

shell脚本里的函数怎么调用???