MATLAB 基础知识 or Matlab入门学习笔记

 前言:学过其他编程语言的话matlab上手还是比较容易的吧,这里就简单整理一下一些基本知识和自己学习的一些心得,方便自己复习和日后查询.还有就是这是刚踏入计算机领域不久的小白文章,emm仅仅为了是供和我一样的小白学习和交流,也是记录一下自己的学习过程。然后再说一说我是如何学习这门语言的吧,首先做题,做什么题呢?首先老师给的题目要做,等一些基础语法熟练后,可以开始学习用matlab如何解决线性代数的问题,可以把自己的线代课本的题目拿出来,开能不能编程解决。我的学习方向的话,大概是 基本语法--->线代基本知识--->编程解决线代问题--->数据可视化,

以下出现任何不懂的 函数名或者 变量名都可以在命令行中输入如下指令

help 函数名 来获取使用的信息(虽然有些是英文,就很烦,不过好在有翻译软件)

比如 helo sort 可以查看sort 函数的用法,有什么不懂的都可help一下

目录

变量篇

数值运算

矩阵的创建

一些特殊矩阵的创建方法 

矩阵的运算

矩阵的数组运算

 查看矩阵的大小(获取矩阵的大小)

矩阵元素(子矩阵)的获取方法,对矩阵元素的修改

变量篇

命名规则同C语言一致:(说多了都觉得烦,估计也没人想看,不过作为一篇入门的笔记,形式上还是要的阐述一下滴)

1.以字母开头

2.可以由数字,字母,下划线组成

3.区分大小写

4.不能同系统预定义的变量名一致

系统预定义的变量

pi圆周率 ,其值为imag(log(-1))
inf 或者 Inf无穷大
Nan 或者nanNot-a-Number,一个不定值 ,如 0/0 或者  ∞/∞
eps浮点运算相对精度,其值为2.2204e-16
i, j虚部单位

怎么理解 nan 和eps?

但是什么是 nan 和eps 呢 ?刚开始一直不知道这俩货是干啥用的,相信大多数刚开始接触编程的人和我有一样的困惑,后面出现的多了,就慢慢好像理解了

就我自己而言 什么时候会出现nan 呢 ,就是当出现一个超出系统精度数值的时候,就会出现 nan

比如 我在命令行中 调用  inf /inf,0/0,inf-inf 出现这些数学上的未定式的时候 就会返回nan 。

eps 也比较好理解 就是系统的最小浮点运算精度 比如 在 matlab中 比 0 大的最小数就是eps

比1 大的最小的数就是1+eps,我是这样理解的 ,eps就是matlab中的最小运算数值,就是最小的单位

每个值都是由大量的最小单位相加得到的一个数。

特殊变量 ans 当调用某一个变量或者函数没有用一个变量接受返回值时,系统默认将返回值赋值给ans

查看已定义的变量

who

显示当前工作空间中的所有变量

whos

显示所有变量的详细属性

 清除变量

clear

清除工作空间中的所有变量

clear all

清除所有变量,包括全局变量、函数链接等

clear 变量名

清除指定的变量

一般在开始编程的时候都会使用clear all清除掉所有变量,这样方便后续的编写,也不会和之前的变量的变量混淆起来 ,养成好习惯。

数值运算

matlab中默认是 采用双精度运算

+   -   *  ^

加,减,乘,幂

/   \

右除,左除

为什么有两个除法 ,一开始肯定都有这个困惑,现在来说一说右除和左除的区别

首先学过线性代数的都知道(doge) 矩阵运算是没有除法的 那么

比如 现在有两个矩阵 A ,b

/ :右除 A/b 表示矩阵A乘以矩阵b的逆 等价于 A * inv(b)     ps:inv(b)表示b的逆矩阵

\:左除 A\b 则表示 矩阵 A的逆乘以矩阵b 等价于 inv(A) *b

注意  

/ 和 \要区别之后出现的 /. 和 \.运算 (不要漏看了那个点哦)

这里就简单说一下 /.运算 ,比如C= A./b 就是 A中元素除 b中同样位置上的元素 得到的这个新的数值作为该位置上的元素 就比如 A(1,1)/b(1,1) 作为元素放在新的矩阵C的(1,1)的位置上 (通过以上解释,应该会清楚 这个运算要求A,b的大小必须要一致吧doge).同样.\就是反过来

进入正题吧,matlab的最终用途就是用于线性代数的 

首先来看看

矩阵的创建

X=[1,2,3,4,5,6,7];

酱紫就是创建了一个 一个一维行向量 (这里顺便说一下,如果你不想运行的时候显示X,可以在语句的末尾加上分号抑制该行语句的输出,这样命令行中显示的数据就不会很杂乱)

X=[1;2;3;4;5;6;7]

这样就是创建一个一维列向量

(这样很容易康出来 属于同一行的元素间隔符用逗号吧,要换行的时候用分号吧,就是分号表示一行的结束

X=[1,2,3;4,5,6;7,8,9]

运行结果如下,这就是一个3x3的方阵 

X =

     1     2     3
     4     5     6
     7     8     9 

一些特殊矩阵的创建方法 

zeros(m,n)

zeros(n)

生成一个 m n 列的零矩阵

m=n 时可简写为 zeros(n)

ones(m,n)

ones(n)

生成一个 m n 列的元素全为 1 的矩阵

m=n 时可简写为 ones(n)

eye(m,n)

eye(n)

生成一个主对角线全为 1 的 m n 列矩阵

m=n 时可简写为 eye(n)即为 n 维单位矩阵

diag(X)

diag(X,k)

X 是矩阵,则 diag(X) X 的主对角线向量

X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵

tril(A)

提取一个矩阵的下三角部分

triu(A)

提取一个矩阵的上三角部分

rand(m,n)

rand(n)

产生 0~1 间均匀分布的随机矩阵

m=n 时简写为 rand(n)

randn(m,n)

randn(n)

产生均值为0,方差为1的标准正态分布随机矩阵

m=n 时简写为 randn(n)

其它特殊矩阵生成函数:magichilbpascal 等,这些可以通过 help 查询

至于什么是零矩阵,单位矩阵 ...还是自己复习一下线代再来看看吧-_-。 

这里简单的说一下diag函数的用法,算了下次再写吧有点累了(doge),其它函数的用法可自行在matlab中运行尝试一下

X=[1,2,3];
A=diag(X)
A =
     1     0     0
     0     2     0
     0     0     3
X=[1,2,3;4,5,6;,7,8,9];
A=diag(X)
A =
     1
     5
     9

矩阵的运算

+   -   *  ^

加,减,乘,幂

这就不用我多说了吧 (:

 幂运算 : A^p  p个矩阵A相乘

左除右除运算上面说过了

矩阵的转置 :    用 '    直接上代码

A=[1,2,3;4,5,6;7,8,9];

A'

运行结果:

ans =

     1     4     7
     2     5     8
     3     6     9

矩阵的逆 : 用函数 inv    如矩阵A的逆   inv(A)

其他的一些操作

fliplr(A)

左右翻转

flipud(A)

上下翻转

rot90(A)

rot90(A,k)

逆时针旋转 90

逆时针旋转 k×90

可以自行尝试一下 看看效果 

这里给出一个例子

A=eye(3)

A=rot90(A)

运行结果如下:

A =

     1     0     0
     0     1     0
     0     0     1

%这样子可以将对角矩阵的主对角元素移到副对角线上
A =

     0     0     1
     0     1     0
     1     0     0
 

矩阵的数组运算

什么是数组运算?就是对应位置上的元素进行运算(相信这样说也是不会懂得)

四种数组运算 ./ .\   .*    .^  称为右点除,左点除,点乘,点幂

.\  和./ 上面已经说过了 那么触类旁通 .* 和.^其实也是一样的啦

就拿 .^来说吧

A=[1,2,3;1,2,3;1,2,3];

B=[1,1,1;2,2,2;3,3,3];

C=A.^B

%运行结果如下:

C =

     1     2     3
     1     4     9
     1     8    27

%很明显 对C(1,1)=A(1,1)^B(1,1) ,C(2,2)=A(2,2)^B(2,2),以此类推, .*无非就是将^改成*

 查看矩阵的大小(获取矩阵的大小)

size(A)

返回矩阵 A 的行数和列数

size(A,1)

返回矩阵 A 的行数

size(A,2)

返回矩阵 A 的列数

length(x)

length(X)

x 是向量,则返回 x 的长度

X 是矩阵,则返回行数和列数中大的一个

numel(A)

返回 A 的元素的个数

矩阵元素(子矩阵)的获取方法,对矩阵元素的修改

如果是对于一维行向量或者列向量X,直接用X(i) 访问第i 个元素 

下面以大小为nxm的矩阵A为例进行说明

(1)获取矩阵某一个元素:         A(i,j)    得到 第 i行第 j列元素

(2)获取矩阵某一行: A(i,:) 或者A(1,0:m) 得到第i行

(3)获取矩阵某一列:    A(:,j) 或者A(0:n,j) 得到第j列

(4)获取子矩阵 :     A(i:j,p:q) 得到 第i 行到第j行 ,第p列到 第q列的子矩阵

也可以通过以上的方法对矩阵进行修改 

比如 A(1,1)=1

A(1,:)=[1,2,3,4,5,6]

大概就先说到这里吧,后续还想整理一些常见库函数的详细解析和运用,运用matlab解决线性代数问题的方法,线性方程组的求解之高斯消元法和迭代法,二维图形和三维图形的绘制方法等,全看我心情和时间啦=_+

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值