全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2313 1
2015-01-19
这是本人学习matlab的学习记录,一些心得体会和大家分享!
内容包括Matlab语法的一些个人理解,代码实例和运行结果方便对照学习。
目前只完成一部分,将来会继续更新。

Matlab学习系列01_先从C语言谈起rar.rar
大小:(957.44 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 001. 先从C语言谈起.docx
  • 002. Matlab编程思想——向量化编程.docx
  • 003. 矩阵操作.docx
  • 004. 元胞数组.docx
  • 005. 结构数组.docx
  • 006. 字符串.docx
  • 007. 二维绘图(直角坐标).docx
  • 008. 二维绘图(其他坐标).docx
  • 009. 三维绘图.docx
  • 010. 自定义函数.docx
  • 011. 数据的读写、导入及导出.docx



Matlab学习系列02_ Matlab编程思想——向量化编程.rar
大小:(20.91 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 002. Matlab编程思想——向量化编程.docx



Matlab学习系列03_矩阵操作.rar
大小:(27.09 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 003. 矩阵操作.docx



Matlab学习系列04_ 元胞数组.rar
大小:(31.12 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 004. 元胞数组.docx



Matlab学习系列05_结构数组.rar
大小:(25.45 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 005. 结构数组.docx



Matlab学习系列06_字符串.rar
大小:(49.7 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 006. 字符串.docx



Matlab学习系列07_二维绘图(直角坐标).rar
大小:(81.51 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 007. 二维绘图(直角坐标).docx



Matlab学习系列08_二维绘图(其他坐标).rar
大小:(98.37 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 008. 二维绘图(其他坐标).docx



Matlab学习系列09_ 三维绘图.rar
大小:(443.69 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 009. 三维绘图.docx



Matlab学习系列10_自定义函数.rar
大小:(29.32 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 010. 自定义函数.docx



Matlab学习系列11_数据的读写、导入及导出.rar
大小:(136.93 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 011. 数据的读写、导入及导出.docx



Matlab学习系列12_数据预处理—剔除异常值,平滑处理,标准化(归一化).rar
大小:(157.27 KB)

只需: 1 个论坛币  马上下载

本附件包括:

  • 12. 数据预处理—剔除异常值,平滑处理,标准化(归一化).docx



Matlab学习系列13_ 数据插值与拟合.rar
大小:(3.18 MB)

只需: 1 个论坛币  马上下载

本附件包括:

  • Matlab学习系列13_ 数据插值与拟合.docx



附件列表

Matlab学习系列12_ 数据预处理(1)剔除异常值及平滑处理.rar

大小:86.18 KB

只需: 1 个论坛币  马上下载

Matlab学习:数据预处理:剔除异常值+平滑处理

本附件包括:

  • 12. 数据预处理(1)——剔除异常值及平滑处理.docx

Matlab学习系列12_数据预处理(1)剔除异常值及平滑处理.rar

大小:138.12 KB

只需: 1 个论坛币  马上下载

Matlab学习:数据预处理1.剔除异常值、平滑滤波

本附件包括:

  • 12. 数据预处理(1)——剔除异常值及平滑处理.docx

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-1-19 10:20:32
贴一篇给大家示例一下啊,第10篇

010. 自定义函数

函数——是编程的核心概念之一,是能够完成相对独立功能的代码封装成的模块。

在主程序中通过函数名和实参调用它,通过接口(即函数的输入、输出参数)来实现“通讯”。所以在调用函数时,你只要知道【被调用的函数是用来做什么的】,以及【如何对应它的输入、输出参数】就行了。

关于【形参(形式参数)】和【实参(实际参数)】:函数定义中的参数就是形参,只是用来限定函数所接收的数据类型的,“泛指该数据类型下任一元素”;函数调用中的参数就是实参,是“特指的具体数值”来代入函数体执行代码。例如(C语言):
int max(int x, int y)
{ if (x >= y)
return x;
else
return y; }
……
int a = 5, b = 4;
max(2,3);
max(a,b);
……
其中,x,y是形参,2, 3,a, b是实参。

使用函数的好处:增加程序的可读性(函数可独立放在主程序之外)和重用性(一个函数可以多次被调用)。

Matlab的自定义函数,常用的有:m文件定义函数、inline(内联)函数、匿名函数。

一、        m文件定义函数(m-函数)

1.        依次File-->New-->Function,会弹出一个新编辑窗口,包含代码如下:

function [ output_args ] = Untitled2( input_args )
% UNTITLED2 Summary of this function goes here
% Detailed explanation goes here


  end

这是一个m-函数的模板。

function:表示编写的是一个函数。
output_args: 输出参数,即函数的返回值,各返回值间用逗号隔开。(不需要像C语言那样,通过return到返回值来赋值,outp_args相应的参数可以直接使用)
input_args: 输入参数,各参数之间用逗号隔开。
Untitled:  所定义的函数名。注意:函数名和m文件名需要保持一致。
end 表示此函数编辑完毕。

函数的基本结构:
function  [ 输出形参表: output1, output1, ..., outptn ] = 函数名 [输入形参表: input1, input2, ... , inputn]
    注释说明部分
    函数体代码部分
end

说明:(1) 在调用函数时要使用编写此函数的文件名,一般函数名和文件名保持一致。
(2)        函数中遇return语句时,退出函数体,此函数调用结束。
(3)        函数调用的一般格式是: [输出实参表]=函数名(输入实参表)
(4) 在调用函数时,Matlab用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。

2.        函数体
   
完成函数的具体功能,是根据具体需要编写的。通过使用“函数的输入参数”、“自定义变量”(注意Matlab的变量不用定义,赋值即可)、“流程控制结构”来实现。
   
3.        子函数

函数体里面也可以定义一个或几个函数,称为子函数。

注意:① 子函数只能存在于主函数体内,不独立存在;② 子函数在主函数体内的位置可以任意,不影响使用;③ 子函数只能被主函数以及其他位于同一主函数体下的子函数调用,但子函数“句柄”(见下文)例外。

4.        函数调用

定义完m文件的函数,放置在Matlab的当前路径之下(或修改当前路径为m-函数文件所在路径),然后就和使用Matlab自带的函数一样,直接在命令窗口使用该函数就是调用它了。调用函数时,需要知道函数是干嘛的,以及它的输入参数、输出参数。

   例1 函数(子函数)定义与调用示例,求向量的最大、最小值。
编写m-函数文件:max_min_values.m
function [max,min] = max_min_values(X)
max=mysubfun1(X);
min=mysubfun2(X);

function r=mysubfun1(X) %子函数1
x1=sort(X, 'descend');
r=x1(1);
end

function r=mysubfun2(X)  %子函数2
x1=sort(X);
r=x1(1);
end

  end

命令窗口:
A = [34,56,23,11,2,39];
  [m,n]=max_min_values(A)

运行结果:    m   =   56
n    =   2


二、        内联函数——使用inline()

   可以让用户编写简单的函数而不需要创建M文件。语法格式:

f=inline(‘函数表达式’, ‘变量1’, ‘变量2’, ……)

调用方式:y=f(实参列表)

注意:实参列表顺序应与inline()定义中形参(即变量名)的顺序一致。

   注:这种函数定义方式是将它作为一个内部函数调用。好处是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。

例2 内联函数示例。

f=inline(‘x^2+y’,’x’,’y’)
  z=f(2,3)
运行结果:  f   =   Inline function:
               f(x,y) = x^2 + y
           z  =  7

三、匿名函数

   匿名函数具有 inline() 的所有优点,并且效率比inline函数高,类似于C语言的宏。一旦定义了匿名函数,使用方式和inline函数类似。

使用matlab函数句柄操作符@,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。

注:函数句柄,可以理解成函数的“代号”,适用于函数名比较长,用“代号”代替函数操作更方便。

例3        匿名函数示例。

f=@(x,y)x^2+y^2;
f(2,3)
a=1:5;
b=5:-1:1;
c=0.1:0.1:0.5;
g=@(x,y)x.^2+y.^2+c;
  g(a,b)
运行结果:  ans   =    13
            ans   =
   26.1000   20.2000   18.3000   20.4000   26.5000

四、其他函数定义
1. Syms+subs:
用syms定义一个符号表达式,用subs调用:

该方法的优点是,可以用符号进行替换;缺点是,由于使用符号运算内核,运算速度会大大降低。例如,

Syms f x;       % 定义符号变量
f=1/(1+x^2);    % 定义符号表达式
  subs(f,'x','y^2')  % 调用函数表达式,用y^2替换变量x
运行结果:ans =                       1
                                    ------
                                         4
                                    1 + y

   2. 字符串+subs

直接定义一个字符串,用subs命令调用。例如:

f='1/(1+x^2)';
z=subs(f,'x',2)
  g=subs(f,'x','y^2')  
运行结果:z    =   1/5
g   =                     1
                                    ------
                                         4
                                    1 + y

注:优点是,占用内存最少,定义格式方面自由。缺点是,无法对字符进行符号转化。



补充: matlab的流程控制语句(编程语言基本都通用)
   (一)分支结构
(1) if语句
if 条件1
               matlab语句1;
elseif 条件2
               matlab语句2;
              .......
            else
                matlab语句n;
           end

注意:① 判断条件不用加小括号;结尾必须用end来标识if语句结束;
② 某个逻辑条件为真,则执行且只执行下一条matlab语句(以“ ; ”结尾的)或 { } 中间的程序块。

   (2)switch语句(与if语句类似)
switch 表达式
               case  表达式1
                   matlab语句1
              case  表达式2
                   matlab语句2
               ........
              case 表达式n
                  matlab语句n
otherwise
                  matlab语句n+1
end

   (3)try语句
try
               matlab语句1
catch
               matlab语句2
end
     说明:try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。

   (二)循环结构
(1) for语句

for 循环变量 = 初始值 : 步长 : 终值
                  循环体语句
end
   
     执行过程:给循环变量赋初始值,判断若小于终值(若步长为负则大于),则执行循环体语句;循环变量加一个步长,再判断若小于终值,则执行循环体语句;重复前面过程直到循环变量不小于终值,跳出循环。

(2)while语句

while(条件)
               循环体语句
end

执行过程:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群