【数学建模学习①】matlab基础知识

本文详细介绍了MATLAB的基础知识,包括变量、矩阵运算、基本语法、M文件、符号运算以及图形绘制等内容。MATLAB是线性代数、控制理论等领域的常用工具,对于数学建模也十分有用。文章提供了使用帮助、变量定义规则、矩阵的创建与修改、基本图形绘制等操作,适合MATLAB初学者学习。
摘要由CSDN通过智能技术生成

文章目录

简介

什么是MATLAB?
实际上,它是两个单词的缩写,即MATrix+LABoratory
在欧美各高等学校,MATLAB成为线性代数、自动控制理论、 数字信号处理、时间序列分析、动态系统仿真、图像处理等诸多课程的基本教学工具,成为本科生、硕士生和博士生的必须掌握的基本技能。
在设计研究单位和工业部门,Matlab已经被广泛地用于研究和解决各种具体的工程问题。
可以预见,Matlab将在我国科学研究和工程应用领域发挥越来越大的作用。
当然,在数学建模比赛的时候,MATLAB是一个非常有用的工具,所以学好MATLAB非常有用。

使用帮助

帮助系统提供给MATLAB初学者一个演示学习的平台,常用的命令如下:

  • help——显示当前帮助系统中包含的所有的帮助
  • help+函数名/类名——显示函数/类的相关信息
  • lookfor+关键字——显示包含关键字的函数/类的所有项目
  • what——显示当前目录中MATLAB文件列表
  • who——显示工作区间所有变量的列表
  • whos——显示工作区间中变量的详细信息

变量

变量就是程序执行中可以变化的量。在matlab中,变量无需进行申明。.

数值的记述

Matlab的数只采用十进制表示,可以带小数点和符号;缺省的数据类型为双精度浮点型(double)

变量命名规则

  • 变量名、函数名对字母的大小写是敏感的,比如boy和Boy表示的是两个不同的变量
  • 变量名的第一个字符必须是英文字母
  • 变量名可以包含英文字母、下划线和数字。
  • 变量名不能包含空格、标点

Matlab预定义的变量

在一开始,软件就已经定义的一些变量,成为预定义的变量,如下:

  • ans——最近的计算结果的变量名
  • eps——表示浮点相对精度,对双精度数值来说eps表示从 1.0 到下一个最大双精度数的距离。对单精度数值来说eps表示从 1.0 到下一个最大单精度数的距离。
  • pi——圆周率Π
  • inf——无限大 ∞值
  • i/j——虚数单位

变量的精度

控制显示精度的函数:format 
控制精度计算的函数:
digits(n)——设置缺省的精度;vpa(S, n )——将S表示为n位有效位数的形式。 

注意:小数在使用中可能会存在累计误差。

Matlab基本语法

Matlab三种控制结构

- 顺序结构

程序按照顺序执行的结构,直接将程序语句排列

  • 选择结构
    程序按照设定的条件来分为多路分支执行,主要有两种,if语句和switch语句。

if语句——if-else-end
switch语句——switch-case-otherwise-end

%% if语句代码示例
clear
n = input('输入n = ');
if n >= 90
    r = 'A'
elseif n >= 80
    r = 'B'
elseif n >= 70 
    r = 'C'
elseif n >= 60
    r = 'D'
else
    r = 'E'
end
%% switch语句代码示例
clear
n = input('输入n = ');
Ju = fix(n/10);
switch Ju
    case{10, 9}
        r = 'A'
    case 8
        r = 'B'
    case 7
        r = 'C'
    case 6
        r = 'D'
    otherwise
        r = 'E'
end

- 循环结构

程序按给定的条件重复地执行指定的程序段或者模块,主要有两种,for语句和while语句
for语句——for 循环变量 = 起始值:步长:终止值-循环体-end
while语句——while 表达式-循环体-end

%% 计算1+2+3+...+100
% for 结构
clear 
sum = 0;
for i = 1:1:100
    sum = sum + i;
end
sum 
%% 计算1+2+3+...+100
% while 结构
clear
sum = 0;
i = 0;
while i < 100
    i = i + 1;
    sum = sum + i;
end 
sum

其他语句

break语句——用于立即跳出含该break语句的循环语句
continue语句——用于提前结束当前循环
return语句——用于终止当前命令的执行,在任何地方遇到return时程序立即终止
try-catch语句——用于实现异常处理机制。需要检测的程序必须放在try语句块中执行,异常由catch语句捕获并处理

%% try-catch 应用实例
clear
N = input('Please input N = ');
A = magic(3);
try
    A_N = A(N, N)
catch
    A_end = A(end, end)
end

M文件

编程原则

1.百分号”%”后面的内容是程序的注释信息
2.clear命令用于清楚变量,通常用于主程序开头
3.充分利用MATLAB提供的函数进行运算
4.在语句后输入分号,使中间结果不显示在屏幕上
5.输入少量数据时,可以使用input命令完成
6.大量的数据输入最好通过子程序完成,在主程序中调用该子程序即可
7.尽量采用主程序调用子程序的方法,使主程序清晰易读,便于维护
8.充分利用调试功能对程序进行调试,有的时候隐含的逻辑错误更不容易发现危害却很大
9.设置MATLAB的工作路径和当前工作目录,方便操作和运行程序

命令文件

在MATLAB命令窗口中直接输入命令文件的文件名
命令文件的文件名不要与其他函数/文件重名
命令文件的文件名不要与变量充名

函数文件

定义一个函数,需要指定输入参数和输出参数
函数文件具有独立的内部变量空间
调用函数文件时输入函数文件的文件名并带入指定的实际参数
函数文件的格式如下:

function [outputArg1,outputArg2] = func(inputArg1,inputArg2)
%FUNC 此处显示有关此函数的摘要
%   此处显示详细说明

end

·输出参数多于一个时,应使用中括号
·输入参数多于一个时,用逗号隔开
·函数名与所存的M文件名应同名
·函数体中可使用的错误提示信息:warning(‘message’)

函数文件与命令文件的区别

·函数文件用function关键字定义,命令文件则不用
·函数文件可以传递参数,而命令文件不能传递参数
·函数文件中定义和使用的是局部变量,只在函数内有效
·命令文件中的变量都是全局变量,推出命令文件后仍然有效

函数文件和命令文件的创建方式

  • 命令文件创建的基本步骤
    1.打开MATLAB的M文件编辑器或任何一个文本编辑器
    2.写入MATLAB的命令代码
    3.保存文件名为filename.m,即完成了命令文件的创建
  • 函数文件创建的基本步骤
    1.打开MATLAB的M文件编辑器或任何一个文本编辑器
    2.写入MATLAB的代码,注意第一行必须用function关键字,并定义函数四要素
    3.保存文件名为funcname.m,即完成了函数文件的创建
    Note: 文件名应与函数名同名,最好将M文件放置在MATLAB搜索路径下
% 脚本名称:arith.m
% 脚本功能:任意输入一个正整数,如果是偶数,用2除
%                              如果是奇数,用3乘再加1
%           反复重复这个过程,直到得到的数为1
%           将依次得到这个数的数列返回
function y = arith(x)
    % 健壮性判断
    if round(x) ~= x
        error('Please enter an integer!');
    end

    k = 1;                  % 赋序列初始索引
    y(k) = x;               % 输入
    while (x~=1) 
        k = k + 1;          % 索引递增
        if rem(x, 2) == 0   % 求余
            x = x/2;        % 执行偶数对应操作
            y(k) = x;
        else 
            x = x*3 + 1;    % 执行奇数对应操作
            y(k) = x;
        end
    end
end

常用函数

abs(x) 标量的绝对值或者向量的长度
sqrt(x) 开平方
real(z) 复数z的实部
imag(z) 复数z的虚部
conj(z) 复数z的共轭复数
angle(z) 复数z的相角
round(x) 四舍五入至最近整数
fix(x) 舍去小数至最近整数
floor(x) 地板函数,即舍去正小数至最近整数
ceil(x) 天花板函数,即加入正小数至最近整数
rat(x) 将实数x化为多项式分数展开
rats(x) 将实数x化为分数表示
sign(x) 符号函数(Signum function)
当 x < 0 时,sign(x) = -1;
当 x = 0 时,sign(x) = 0;
当 x > 0 时,sign(x) = 1
rem(x, y) 求x除以y的余数
gcd(x, y) 整数x和y的最大公因数
lcm(x, y) 整数x和y的最小公倍数
exp(x) 自然指数
pow2(x) 2的指数
log(x) 自然对数
log2(x) 以2为底的对数
log10(x) 以10为底的对数

三种特殊函数

1.匿名函数
通常只由一句简单的声明语句组成
可以接受多个输入和输出函数
其优点在于不需要去维护一个函数文件
调用格式:
fhandle = @(arglist)expr
2.主函数和子函数
在一个单个的M文件中可以定义多个函数。
如果多个函数出现在一个文件中
那么第一个定义的(最好与M文件同名)函数为主函数
其下面定义的函数为子函数
注意:子函数只能被同一文件中的函数调用
3.私有函数 指存放在private子目录中的函数
注意:私有函数只能由其父目录中的函数调用,在函数调用时优先于其他路径上的函数
调用次序:子函数 > 私有函数 > 搜索路径上的函数

%% 创建匿名函数
% 函数名称:myfuncHandle
% 输入参数:x
% 输出参数:
% 函数功能:计算 x^2 + 2*x + 1

myfuncHandle = @(x)(x^2 + 2*x + 1)      % 创建匿名函数
myfuncHandle(10)
%% 主函数和子函数的使用示例
% 脚本名称:mainFunc.m
% 输入参数:x
% 输出参数:y
% 脚本功能:主函数调用子函数示例
function y = mainFunc(x)
    % 主函数
    y = x*subFunc(x);
end

function u = subFunc(w)
    % 子函数
    u = w/2;
end

矩阵

矩阵是线性代数的基本运算单元
矩阵含有M行N列数值
矩阵中的元素可以是实数或复数
矩阵相关的基本运算:加、减、内积、逆矩阵、转置、线性方程组、特征值、特征向量、矩阵分解
矩阵和向量是一样的,用来描述某一个问题的方程组的系数,由方程组的系数和常数构成的方阵。矩阵包括数值矩阵,符号矩阵,和特殊矩阵 等三种基本样式

矩阵的定义

实数矩阵的定义

由命令行窗口直接输入

不同列用逗号来分隔,不同行用分号分隔。所有元素均在方括号内
当矩阵是多维的时候,且方括号内的元素是维数较低的矩阵时,会有多重的方括号。

x1=[1,2,3,4,5,6]
x2=[1;2;3;4;5;6]
x3=[1:6]
x4=[1:3;2:4;3:5]
由M文件生成输入

具体定义矩阵的规则见方法一
·M文件中的变量名称与文件名不能相同,否则会出现变量名与文件名的混乱

由文本文件生成

输入规则
·建立txt文件,直接使用load调用此文件
·txt文件中不含变量名称,文件名即为矩阵变量名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值