啃 matlab一本通读书笔记

MATLAB学习笔记(二) MATLAB学习笔记(二) 一、矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Cholessky分解 2、一般方阵的高斯消去法 矩形矩阵的正交分解(正交变换) 矩阵(方阵)的特征值和特征向量 二、MATLAB基本编程 脚本和函数 函数 脚本 函数与脚本的异同 子函数与私有目录 特殊的控制语句 阅读详情

摘要

本篇为自学matlab笔记,主要参考书为《matlab r2016a完全自学一本通》
如有侵权烦请告知删除

第一章 2016a概述

命令命令说明
cd显示或改变当前工作文件夹
dir显示当前文件夹或指定目录下的文件
home将光标移到命令行窗口的最左上角
clf清除图形窗口
type显示文件内容
echo工作窗信息显示开关
disp显示变量或文字内容
load加载指定文件的变量
diary日志文件命令(将命令行窗口文本记录到日志文件中)
!调用DOS命令
exit 或 qiut退出matlab
pack收集内存碎片
hold图形保持开关
path显示搜索目录
save保存内存变量到指定文件

echo说明:

echo 指令— 用来控制m文件在执行过程中是否
显示
echo on — 打开所有命令文件的显示方式
echo off — 关闭所有命令文件的显示方式
echo — 在以上两者间切换
echo对于命令文件函数文件有所不同,命令文件用法简单,函数对所有命令起作用;函数文件用法较复杂,具体请help查询。
echo file on — 打开file函数文件的显示方式
echo file off — 关闭file函数文件的显示方式
echo file — 切换file函数文件的显示方式
echo on all — 打开所有函数文件的显示方式
echo off all —关闭所有函数文件的显示方式

第二章 matlab基础知识

1.1.1 取整函数

函数名称功能说明
floor向下取整
ecil向上取整
round取最接近的整数,如果小数部分是0.5,则向绝对值大的方向取整
fix向0取整

八种内置整形数据类型
int8 uint8 int16 uint16 iny32 uint32 int64 uint64

1.2 浮点数类型

浮点类型储存位宽转换函数
单精度32single
双精度64double

注意:整数只能与同类整数或标量双精度相乘

int8 类型整数 只能与 int8类型或double相乘

1.3 复数

matlab中默认使用i和j作为虚部的标志,创建虚数可以按照复数形式直接输入也可以使用complax函数

关于复数的相关函数

函数名称功能函数名称功能
real(z)返回实部imag(z)返回虚部
abs(z)返回z的模angle(z)返回z的辐角
conj(z)返回z的共轭复数comlex(a,b)以a为实部,b为虚部创建复数

1.4 无穷量 和 非数值量

Inf NaN
非数值量是由于 0/0 或 Inf/Inf 类型的非正常运算产生的

2.1.2 逻辑类型

< <=
> >=
==
~=

逻辑运算符
& | ~
与 或 非

2.1.3 字符和字符串

字符串的单引号是用两个连续的单引号表示的
字符串也有切片操作
字符串的连接可以直接将字符串数组连接实现

U = 'hello ';
V = ' world';
W = [U V]
W = U+V

输出结果:
W =

hello world

W =

136 220 219 222 219 132

可见连接两个字符串的操作是 [ ]

2.1.4 函数句柄

对函数调用有直接调用和间接调用两种方法

创建函数句柄
function_handle =@function_name;
其中function_name是函数所对应的M文件的名称或Mtalab内部函数名称

@ 是句柄创建操作符
function_handle 变量保存函数句柄

函数句柄的操作函数

函数名称函数功能
functions(funhandle)返回一个结构体,储存了函数的名称、函数类型以及函数.M文件的位置
func2str(funhandle)将函数句柄转换为函数名称的字符串
str2func(str)与像一个相反

等

2.1.5 结构体类型

创建结构体的两种方法:
1、

student.name = 'caiji';
student.age = 22;
student.grade = 2;
student

输出:

student = 

 name: 'caiji'
  age: 22
grade: 2

2、利用struct函数创建结构体

student = struct('name','caiji','age',22,'grade',2)

结果同上

2.1.6 数组类型

[ ]

:

类似于python的列表操作

2.1.7 单元数组类型

元胞数组 cell

对于单元数组C,C(m,n)指的是单元数组中第m行第n列的单元,而C{m,n}指的是单元数组中第m行第n列单元中的内容
一个是“单元数组”一个是“单元中的内容”

单元数组的合并 a,b都是元胞 c = {a,b}

单元数组中指定数组的删除

如果要删除单元数组中指定的某个单元,只需要将空矩阵赋值给该单元即可

c{m,n} = []

删除后改位置元素会是一个空数组

要删除元胞中的单元的话,使用小括号

c(m) = []

使用 reshape 改变单元数组的形状
将c改变为一个m行n列的形状

b = reshape(c,m,n)

2.1.8 map容器类型

map类似于python中的字典,有key和value
一个map是matlab中的对象,有以下属性

属性说明默认值
Countuint64,表示在map中存的key总数0
KeyType字符串,表示key类型char
ValyeType字符串表示value类型any

map中属性查看方法为map名+小数点”.“+map的属性名

创建map对象:
通过构造函数创建map

map_obj =  containers.Map({'k1','k2','k3'},{'v1','v2','v3'})

结果如下:

map_obj =
Map (具有属性):
Count: 3
KeyType: char
ValueType: char

查看读取map对象

keys(map_obj)
values(map_obj)

结果如下:

ans =
‘k1’ ‘k2’ ‘k3’
ans =
‘v1’ ‘v2’ ‘v3’

读取map对象
在创建好一个map对象后,用户可以对其进行数据寻访,寻访指定键所对应的值

val = map_obj('k2')

结果如下:

val =
v2

编辑map对象
1、删

remove(map_obj,'k1')

2、增

map_obj('k6') = '233'

3、改

map_obj('k6') = '23366'

2.2 基本矩阵操作

向量:当m=1或n=1时,建立的矩阵成为向量
标量:当m=n=1 时建立的矩阵成为标量
单个实数或复数在matlab中都是以矩阵形式储存的,在matlab中,单个数据或单个数据构造的矩阵都是标量
空矩阵:当m=n=0或m=0或n=0,创建的矩阵成为空矩阵

对矩阵的操作有旋转、改变维度、排序、逆序等,函数挺多,用的时候再记

对二维数组元素的索引有双下标索引和单下标索引
单下标索引遵循列优先原则

线性引用矩阵元素:
矩阵中某一元素的单下标索引和双下标索引之间,可以通过matlab内部函数进行转换:

IND = sub2ind(siz,i,j)

功能为将双下标索引值转换为单下标索引,其中 siz 是一个包含两个元素的数组,代表了转换矩阵的行列数,一般可以用 **size(A)**表示,i,j分别表示双下标索引中的行列值,IND是转换后单下标索引值

反之:单下标转双下标

[I,J] =  ind2sub(siz,ind)

tips: 求和函数 sum()

matlab中还提供一个关键字end,用于表示该维中的最后一个元素

2.2.5 矩阵信息的获取

矩阵结构是指矩阵子元素的排列方式
matlab提供了各种测试函数,eg:

isempty(A)  检测矩阵是否为空
isscalar(A)  检测矩阵是否是单元素的标量矩阵
isvector(A)		检测矩阵是否是只具有一行或一列元素的一维向量
issparse(A)		检测数组是否是稀疏矩阵

矩阵大小:
矩阵形状查询函数

函数描述
ndims获取矩阵的维数
size获取矩阵在各维上的长度
length获取矩阵在最长维的长度
numel获取矩阵元素的个数

numel 是number of elements的缩写

矩阵维度:
对于空矩阵、标量矩阵、一维矩阵和二维矩阵,matlab都将其作为普通二维数组对待。用 [] 产生的空矩阵是作为二维矩阵的

矩阵占用内存:
使用whos命令查看当前工作区中指定变量的所有信息

2.2.6 矩阵的保存和加载

矩阵元素的寻址:
1):矩阵下标寻址方法
1、单元素的寻访

A(m,n)

2、矩阵元素区域的寻访

A(1:m,n)   访问第n列的第一个至第m个元素

2)线性寻址

线性寻址的下标是通过矩阵的双下标换算的得来的

A(m,n)
A(i,j)  =  A((j-1)*m+i)

matlab提供了多个矩阵合并的函数
cat()
horzcat()
vertcat()
repmat()
等

2.3 运算符

+ - * /

.* ./ .^

注意乘和点乘的区别
乘就是矩阵相乘
点乘是对应元素相乘

matlab还提供了大量的运算函数
在此就不进行列表,用的多了自然就熟了

exp(x) 求以e为底数的x次幂
log(x)
log10(x)
sqrt(x) x的平方根
sin(x)
cos(x)
tan(x)
asin(x) 反正弦
acos(x)
atan(x)
mod(a,b) a,b相除余数
min(a,b)
max(a,b)
mean(x) 均值
median(x) 中位数
sum(x)
prod(x) 阵列x的连乘值
cumsum(x) 累积总和值
cumprod(x) 累积连乘值
sign(x)
rem(x,y) x/y 余数
diff(x) x向量的差分
sort(x) 排序
fft(x) 离散傅里叶变换
rank(x) x矩阵的秩

2.3.2 关系运算符

< <=
> >=
==
~=

matlab中重要的逻辑函数:

函数名运算法则
xor(x,y)异或运算
any(x)如果在一个向量中,有任何元素时非0,返回1,否则返回0
all全1才是1 ,有0返回0

2.4字符串处理函数

matlab字符串处理函数

字符串函数函数功能
eval(string)作为一个matlab命令求字符串的值
blanks(n)返回一个n个0或空格的字符串
deblank去掉字符串后拖的空格
feavl求字符串给定的函数值*
findstr从一个字符串内找另一个字符串
isletter字母存在时返回真值
isspace空格存在时返回真值
Isstr输入字符串,返回真值
iasterr返回上一个产生matlab错误的字符串
strcmp字符串相同,返回真值
strrep用一个字符串替换另一个字符串
strtok在字符串里找出第一个标记

feavl函数:

语法
[y1,…,yN] = feval(fun,x1,…,xM)
说明
示例
[y1,…,yN] = feval(fun,x1,…,xM) 使用函数的名称或其句柄以及输入参数 x1,…,xM 来计算函数的结果。
feval 函数遵循与直接调用函数句柄相同的作用域和优先级规则。有关详细信息,请参阅创建函数句柄。

Isstr函数:

不推荐使用 isstr。请改用 ischar。

2.4.1 字符串的构造

字符串内容要在单引号内,如果字符串内的字符包含单引号,则用两个重复的单引号表示
构造多行字符串时,若字符串内容写在 [ ] 内,那么多行字符串的长度必须相同,若字符串写在{}内,则多行字符串内容可以不同

matlab还提供纵向连接字符串的而函数
strvcat :连接多行字符串时,每行字符串长度不要求相等,所有非最长字符串的右边会自动补偿空格,使每行字符串长度相等

char:与strvcat类似,不过多行字符串有空字符串时,strvcat会直接忽略,char会补偿后再进行连接

2.4.4 字符串数值转换

数据类型转换函数

函数名称函数功能
abs字符串转ASCII
dec2hex十进制转十六进制
fprintf把格式化的文本写到文件或显示屏上
hex2dec十六进制转十进制
int2str整形转字符串
lower字符串转小写
num2str数字转字符串
setstrASCII转字符串
sprintf用格式控制数字转换字符串
sscanf用格式控制数字转换数字
str2mat字符串转文本矩阵
str2num字符串转数字
upper字符串转大写

第三章 数组与矩阵

3.1.1数组的创建

访问数组第三个到最后一个元素

a=c(3:end)

数组元素反向输出

a=c(end:-1:1)

通过冒号创建一维数组

x=A:step:B

通过logspace函数创建一维数组
y=logspace(a,b) 该函数创建行向量y,第一个元素为 10a ,最后一个元素为10b,形成总数50个元素的等比数列
y=logspace(a,b,n) 形成总数为n的等比数列

通过linspace创建一维数组
y=linspace(a,b) 创建行向量y,第一个元素为a,最后一个为b
形成总数为100个元素的线性间隔向量
y=linspace(a,b,n) 形成总数为n

3.1.2 数组常见运算

通过函数dot() 可实现数组元素的点积运算

clear all
A=[1 5 6 8 9 6]
B = [2 5 8 4 6 8]
c=dot(A,B)
d=sum(A.*B)

结果:

A =
1 5 6 8 9 6
B =
2 5 8 4 6 8
c =
209
d =
209

3.2.1 创建矩阵

1、希尔伯特矩阵 H阵
Hij = 1/(i+j-1)
由于他是一个条件数差的矩阵,所以将它用来作为实验矩阵
hilb(n) :用于生成一个n x n的希尔伯特矩阵
invhilb(n) :用于生成一个nxn的希尔伯特矩阵的逆矩阵整数矩阵

2、拓普利兹矩阵
3、0~1 之间均匀分布的随机矩阵

r=rand(n) 产生维数为n的0~1间均匀分布的随机矩阵
r=rand(m,n) 产生维数为nxm的0~1间均匀分布的随机矩阵

4、标准正态分布随机矩阵

r=randn()
格式可参考rand函数

5、魔方矩阵
魔方矩阵中的每行、每列和两条对角线上的元素和相等

M=magic(n)

6、帕斯卡矩阵

A = pascal(n)

7、范德蒙矩阵

A = vander(v)

clear all
A = vander([1 2 3 4])
B = vander([1; 2 ;3 ;4])

结果:

A =
1 1 1 1
8 4 2 1
27 9 3 1
64 16 4 1
B =
1 1 1 1
8 4 2 1
27 9 3 1
64 16 4 1

3.2.2 改变矩阵大小

表达式 **C=[A B] 在水平方向合并矩阵A和B
表达式
C = [A ; B]**在竖直方向合并


矩阵行列的删除
要删除矩阵的某一行或一列,只需要把该行或列赋值为 ‘[]’ 即可

3.2.3 重构矩阵

矩阵的转置 ‘ 单引号

3.3.2 矩阵的乘法运算

矩阵与矩阵相乘

A*B
前行等后列
结果是前列后行

3.3.3 矩阵除法运算

矩阵除法是乘法的逆运算
分为左除和右除,分别用“\”和“/”表示

3.3.4 矩阵的幂运算

当矩阵A为方阵时,可进行矩阵的幂运算

用“^”来进行幂运算

3.3.5 矩阵元素的查找

ind=find(X) 该函数查找矩阵X中的非零元素,函数返回这些元素的单下标
[row,col] = find(X,…) 返回双下标i和j

clear all;
A=[1 3 0
    5 6 7
    8 9 0];
B = find(A)
C = find(A>=5)
D = A(A>=1)

结果:

B =
1
2
3
4
5
6
8
C =
2
3
5
6
8
D =
1
5
8
3
6
9
7

线性索引
线性索引允许使用单个下标创建指向数组的索引,例如A(k)。MATLAB® 将该数组视为单列向量,其中每一列附加到前一列的底部。因此,线性索引从上到下、从左到右对列中的元素编号。

例如,假设一个 3×3 矩阵。您可以用 A(5) 来引用 A(2,2) 元素,用 A(8) 来引用 A(2,3) 元素。线性索引根据数组大小而改变;A(5) 会为 3×3 矩阵和 4×4 矩阵返回不同位置上的元素。

sub2ind 和 ind2sub 函数对于在下标和线性索引之间进行转换非常有用。

3.3.6 矩阵元素的排序

sort() 函数用来矩阵排序

clear all;
A=[1 3 0
    5 6 7
    8 9 0];
B=sort(A);  %矩阵元素中按照列进行升序排列
C=sort(A,2); %矩阵元素中按照行进行升序排列
D=sort(A,'descend')%矩阵元素中按照列进行降序排列
E=sort(A,2,'descend')%矩阵元素中按照行进行降序排列


3.3.7 矩阵元素的求和

sum()函数
cumsum()函数

clear all;
A=[1 3 0
    5 6 7
    8 9 0];
B=sum(A)    %矩阵元素中按照列进行求和
C=sum(A,2)  %矩阵元素中按照行进行求和
D=cumsum(A)  %矩阵中各列的和
E=cumsum(A,2)%矩阵中各行的和

结果:

B =

14 18 7


C =

4
18
17


D =

1 3 0
6 9 7
14 18 7


E =

1 4 4
5 11 18
8 17 17

3.3.8 矩阵元素的求积

prod() 函数
cumprod() 函数

用法同求和

3.3.9 矩阵元素的差分

顾名思义,就是在 矩阵 中,一行(一列)的元素与上一行(上一列)对应元素的差值,依次排列在上一行(上一列)元素对应所在位置。 矩阵元素的差分分为行差分和列差分,第一行和第一列不做差分计算。 上述的定义是定义 一阶差分 计算,若进行多阶矩阵元素的差分计算,仅需要进行迭代计算即可。

diff() 函数

clear all;
A=magic(3);
B=diff(A)       %矩阵各列元素的差分
C=diff(A,2)     %矩阵各列元素的2阶差分
D=diff(A,1,1)   %矩阵各列元素的差分
E=diff(A,1,2)   %矩阵各行列元素的差分

结果

B =

-5 4 1
1 4 -5


C =

6 0 -6


D =

-5 4 1
1 4 -5


E =

-7 5
2 2
5 -7

3.4.1 矩阵分析

这里线代没学好,还回去听了一遍,还没懂=_=,范数是个啥…

函数分析功能描述
norm求矩阵或者向量的范数
normest估计矩阵的2阶范数
rank矩阵的秩,即对角元素的和
det矩阵的行列式
trace矩阵的迹
null0空间
……

1、向量和矩阵的范数运算
对于线性空间中的一个向量 x={x1,x2,…,xn},如果存在一个函数r(x)满足以下3个条件:
(1):r(x)>0,且r(x) = 0,的充分条件为0
(2): r(ax) = |a|r(x) , 其中a为标量
(3):对于向量x和y,有r(x+)<=r(x)+r(y)

则称r(x)为向量x的范数,一般记为||x||,范数的形式多种多样,eg:
在这里插入图片描述
稀疏矩阵









pass矩阵,真鸡儿难

第四章 MATLAB编程基础

4.2.2 变量类型

局部变量

全局变量

global  X

永久变量
永久变量用persistent声明,只能在M文件函数中定义和使用,只允许他的函数存取。当声明他的函数退出时,MATLAB不会从内存中清除它
类似于C语言的static关键字

persistent  X

4.2.3 MATLB默认的特殊变量

这些变量有时候会很有用,所以就把它们全写下来

特殊变量描述
ans系统默认的用作保存运算结果的变量名
pi圆周率
eps机器零阈值,MATLAB中最小数
inf表示无穷大
NaN或nan表示不定数
i或j虚数
nargin函数的输入参数个数
nargout函数的输出参数个数
realmain可用的最小正实数
realmax可用的最大正实数
bitmain可用最大正整数(以双精度格式存储
varargin可变的函数输入参数个数
vararout可变的函数输出个数
beep使计算机发出“嘟嘟”的声音

4.2.4 关键字


    'break'
    'case'
    'catch'
    'classdef'
    'continue'
    'else'
    'elseif'
    'end'
    'for'
    'function'
    'global'
    'if'
    'otherwise'
    'parfor'
    'persistent'
    'return'
    'spmd'
    'switch'
    'try'
    'while'

4.3.1顺序结构

4.3.2 if-else-end 分支结构

4.3.3 switch-case 结构

switch value
    case test1
        command1
    case test2
        command2
    ....
    otherwise
end

4.3.4 try-catch结构

try 
    command1 %命令组1总是首先被执行。若正确,执行完后结束此结构
catch
    command2 %命令组1执行发生错误时执行命令组2
end

4.3.4 for循环结构

for x=array
    commands
end

4.3.4 while循环结构

while expression
    commands
end

4.4.1 return指令

4.4.2 input和output指令

Value = input('请输入数字')
Value = input('巴拉巴拉','s')

第一种调用方式,用户可以输入数值、字符串等各种形式的数据
第二中调用方式,用户无论输入什么内容,均以字符串形式赋值


当遇到keyboard指令时,MATLAB将控制权暂时交给键盘,用户可以由键盘输入各种可发的MATLAB指令,只有当用户输入完成,并输入ruturn执行后,空主权才还给matlab

intput和keyboard的不同之处在于:ketboard指令语序输入任意多个matlab指令,而input只允许用户属兔赋值给变量的值,即数组、字符串、或元胞数组等。

4.4.3 yesinput指令

yesinput指令是一个只能输入的指令,它提供一个默认值,并对输入范围进行检查
这个函数好像有点问题,在matlab2016a上运行时说没有这个函数,用的不多,暂时就不细究了…

4.4.4 pause指令

pause指令的功能为控制执行文件的暂停与恢复

pause  %暂停执行文件,等待用户按任意键继续
pause(n)  %在继续执行文件之前,暂停n秒

4.4.5 continue指令

4.4.6 break指令

error和warning指令

error(‘message’) :显示出错信息,终止程序

waring(‘message’):显示警告信息,继续运行程序

4.5.2 函数

若M文件的第一个可执行语句以function开始,改文件就是函数文件,每一个函数文件都定义一个函数

4.5.3M文件的一般结构

函数参数指令集

数据格式说明
nargin指定调用函数所带参数的个数
nargout指定调用函数所返回的参数的个数
inputname(x)返回输入表上数值x所在位置的输入参数变量的名字。如果用一个表达式代替已命名的参数,则返回一个空字符串

4.5.4 匿名函数、子函数、私有函数与私有目录

匿名函数创建方法

f = @(input1,input2,..) expression

f为创建的函数句柄,函数句柄是一种间接访问函数的途径,可以使用户调用函数的过程中变得很简单,减少程序设计的繁杂

子函数
在matlab中,多个函数的diamante可以同时写到一个M函数文件中。其中,出现的第一个函数称为主函数,该文件中的其他函数称为子函数,保存时所用的函数文件名应当与主函数定义名相同,外部程序只能对主函数进行调用

子函数书写规范:
1): 每个子函数的第一行是其函数声明行
2): 在M函数文件中,主函数的位置不能改变,但是多个子函数的排列顺序可以任意改变
3): 子函数只能被处于同一M文件中的主函数或其他子函数调用
4): 在M函数文件中,任何指令通过名称对函数进行调用时,子函数间的信息传递可通过输入/输出变量、全局变量或跨空间指令来实现

私有函数与私有目录
1、私有函数的构造与普通M函数完全相同
2、关于私有函数的调用:私有函数只能被private直接父目录下的M文件所调用,而不能被其他目录下 的任何M文件或matlab指令窗口的命令所调用
3、在M文件中,任何指令通过“名称”对函数进行调用时,私有函数的优先级仅次于matlab内置函数和子函数

4.5.5重载函数

4.5.6 eval和feval函数

eval(s):该指令的功能为使用matlab的注释器求表达式的值或执行包含文本字符串s的语句

feval函数的具体句法形式:

[y1,y2,...] = feval('FN',arg1,arg2,...)

该指令的功能为用变量arg1,arg2,…来执行FN函数指定的计算

4.5.7 内联函数

不推荐使用 inline。请改用 匿名函数。

在以后版本会取消inline,在此不做介绍

4.5.8 向量化和预分配

1、向量化
想让matlab最高效工作,重要的是在M文件中把算法向量化。其他程序语言可能用for多DO循环,matlab则可用向量或矩阵运算
2、预分配
若一条代码不能向量化,则可以通过预分配任何输出结果已保存其中的向量或数组以加快for循环

4.5.9 函数的函数

一种以标量为变量的非线性函数称为“函数的函数”,即以函数名为自变量的函数。这类函数包括求零点、最优化、求积分和常微分方程。

4.5.10 P码文件

一个M文件首次被调用时,matlab将首先对该M文件进行语法分析,并把生成的相应内部伪代码文件存放在内存中。
当M文件在此被调用时,将直接调用该M文件在内存中的P码文件,而不会再对原M文件进行重复的语法分析

第五章 数据可视化

5.1.1离散数据及离散函数

x1 = [1 2 4 6 7 8 10 11 12 14 16 17 18 20]
y1 = [1 2 4 6 7 8 10 10 8 7 6 4 2 1]
figure(1)
plot(x1,y1,'o','MarkerSize',15)
x2 = 1:20
y2 = log(x2)
figure(2)
plot(x2,y2,'o','MarkerSize',15)

在这里插入图片描述

5.1.2 连续函数

在matlab中是无法画出真正的连续的函数的,因此在实现连续函数的可视化时,首先必须将连续函数用一组离散自变量上计算函数结果,然后将自变量数组和结果数组在图形中表示出来。

x1 = (0:12)*pi/6;y1 = cos(3*x1);
x2 = (0:360)*pi/180; y2 = cos(3*x2);
figure(1)
subplot(2,2,1);plot(x1,y1,'o','MarkerSize',3);xlim([0 2*pi]);ylim([-1.5 1.5])
subplot(2,2,2);plot(x1,y1,'LineWidth',2);xlim([0 2*pi])
subplot(2,2,3);plot(x2,y2,'o','MarkerSize',3);xlim([0 2*pi])
subplot(2,2,4);plot(x2,y2,'LineWidth',2);xlim([0 2*pi])

在这里插入图片描述

5.1.3 图形绘制示例

画出 y=x+sinx+ex,画出在x在(-π2\frac{π}{2}2π​,π2\frac{π}{2}2π​)上的图像。。。什么编辑器

x = -pi/2:0.01:pi/2;
y = x+sin(x)+exp(x);
plot(x,y)
plot(x,y,'-ro')
grid on

在这里插入图片描述

plot(x,y,’-ro’)
-ro 就是红色的圈,放大红色粗线会发现红色的圈

在这里插入图片描述
给图像添加注释

title('y的函数图像');
xlabel('x');
ylabel('y');
legend('y=x+sinx+e^(x)')

在这里插入图片描述

5.2.1 plot指令

一般使用规范
1)plot(x,y)

2)plot(y)
其中y为一维实数数组,以1:n为横坐标,yi为纵坐标,绘制曲线(n为y的长度)

3)plot(z)
其中z为一维复数数组,以横轴为实轴,纵轴为虚轴,在复平面上绘制(real(zj),imag(zj))的有序集合的图形

4)plot(A)
绘制矩阵A的列对它下标的图形。对于mxn的矩阵A,有n和含有m个元素的数对,或是有n条有m个点的曲线,且这n条曲线均采用颜色监视器上不同的颜色绘制而成
… … . … … . … … …

5.2.2 栅格

grid on命令可以在当前图形的单位标记处添加栅格
grid off 可以取消栅格

5.2.3 文字说明

指令说明
title(‘text’)在图形窗口顶端的中间位置输出字符串text’作为标题
xlabel(‘text’)在x轴下的中间位置输出字符串’text’作为标注
ylabel(‘text’)在y轴上的中间位置输出字符串’text’作为标注
zlabel(‘text’)在z轴上的中间位置输出字符串’text’作为标注
text(x,y,‘text’)在图形窗口的(x,y)处写字符串‘text’
legend(str1,str2,…,‘Location’,‘pos’)pos可选:North、South、East、…分别代表图形的不同位置

legendoff 从当前图形中清除图例


在matlab中 sqrt(-1) 求-1的算术平方根
结果会是一个复数 0.0000 + 1.0000i


在这里插入图片描述
在这里插入图片描述

5.2.4 线型、标记和颜色

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2.6 图形叠绘

hold on :语句功能为使当前轴及图形保留下来而不被刷新,并接收即将绘制的新的曲线
hold off :语句功能为不保留当前轴及图形,并接收即将绘制的新的曲线

5.2.7 子图绘制 subplot

matlab允许用户在同一个图形窗口中同时绘制多副相互独立的子图,用到subplot指令
subplot(m,n,k): 将(mxn)幅子图中的第k幅作为当前曲线的绘制图

subplot(‘position’,[left bottom width height]): 在指定位置上生成子图,并作为当前曲线的绘制图

绘图这里挖个坑,后面有实际练手的东西再回来补

x1=[81 153 181 227 244 250 251 210 181 179 201 217 212 190 166 179 181 174 145 87 34 ];
y1=[226 192 184 160 125 112 97 68 71 85 86 98 121 135 133 85 71 63 70 171 181 ];
x2=[145 161 174 ];
y2=[70 81 63 ];
x3=[201 208 ];
y3=[86 81 ];
x4=[217 224 ];
y4=[98 94 ];
x5=[244 295 314 279 233 221 181 ];
y5=[125 79 80 127 172 177 184 ];
x6=[279 311 331 282 233 ];
y6=[127 116 121 153 172 ];
x7=[282 298 281 244 221 ];
y7=[153 160 167 177 177 ];
plot(x1,y1,'k',x2,y2,'k',x3,y3,'k',x4,y4,'k',x5,y5,'k',x6,y6,'k',x7,y7,'k')

一堆线哈哈
在这里插入图片描述
在这里插入图片描述

第六章 数据分析

6.1.1 多项式的表达式的创建

通过系数矩阵表达多项式

strcat 即 Strings Catenate,横向连接字符串。
语法
combinedStr= strcat(s1, s2, …, sN)

function s = part6(p)
%这个1个l太像了,傻傻分不清
if nargin>1
    error('Too much input arguments')
end
while p(1)==0
    p(1)=[] ; %将高次0去掉
end
l = length(p);
if(l==0)
    s = '0';
elseif l==1
    s = num2str(p(1))
elseif l==2
    s=strcat(num2str(p(1)),'x+',num2str(p(2)));
elseif l>2
    for i = 1:l
        if i==1
            if p(i)==1
                s=strcat('x^{',num2str(l-i),'}');
            else
                s=strcat(num2str(p(i)),'x^{',num2str(l-i),'}');
            end
        elseif i==1
            s=strcat(s,'+',num2str(p(i))');
        elseif i==l-1
            s=strcat(s,'+',num2str(p(i)),'x');
        else
            if p(i)==0
            else
                s=strcat(s,'+',num2str(p(i)),'x^{',num2str(l-i),'}');
            end
        end
    end
end
            

在这里插入图片描述

6.1.2 多项式求根

提供特定函数
roots() 求解方程式的根

在这里插入图片描述
由根创建多项式
poly()

6.1.3 多项式的四则运算

多项式乘法
在MATLAB中,函数conv支持多项式乘法(运算法则为执行两个数组的卷积)

多项式除法
deconv函数

6.1.4 多项式的导数、积分与估值

1、多项式导数
polyder函数
在这里插入图片描述

2、多项式的积分
polyint函数

polyint(P,k) 返回多项式P的积分,积分常数项为k
polyint§ 返回多项式P的积分,积分常数项默认为0

3、多项式的估值
polyval函数

6.1.5 多项式运算函数及操作指令

在这里插入图片描述

在这里插入图片描述

6.1.6 有理多项式

有理多项式由他们的分子多项式和分母多项式表示。对有理多项式进行运算的两个函数是 residue 和 polyder。含糊 residue执行部分分式展开的运算

6.2.1 数据插值 一维插值

MATLAB图像处理技术 读书笔记(1) 从学校毕业之后,就比较迷茫,不知道自己积累的东西需要用怎样的方式留存下来,放在脑子里容易忘,而且不拿出来系统处理一下,也没办法形成系统,所以,我觉得用“技术笔记”或者“读书笔记”的方式记下来,是一个技术人应该做好的事情。 所以,我们开始吧。 RGB图像是每个像素有24位大小,分为三个通道,每个通道8位,2的8次方等于256,可以表示256个等级 索引,就是把色彩编个号,我记录每个像素的色彩的... 阅读详情

相关推荐

MATLAB神经网络编程(一)——感知器

《MATLAB神经网络编程》 化学工业出版社 读书笔记 第四章 前向型神经网络 4.1 感知器网络 本文是《MATLAB神经网络编程》书籍的阅读笔记,其中涉及的源码、公式、原理都来自此书,若有不理解之处请参阅原书。 感知器可以说是最早的人工神经网络(Artificial Neural Network,ANN),单层感知器是一个具有一层神经元、采用阈值激活函数的前向神经网络网络。感知器的输出一

其实我不会编程,只会脸滚键盘 2万+

matlab echo 的用法

echo 指令— 用来控制m文件在执行过程中是否                           显示     echo on — 打开所有命令文件的显示方式     echo off — 关闭所有命令文件的显示方式     echo — 在以上两者间切换     echo对于命令文件函数文件有所不同,命令文件用法简单,函数对所有命令起作用;函数文件用法较复杂,具体请help查询。 

chenguixin2012的博客 1万+

MATLAB神经网络编程(十)——Hopfield网络结构与应用

《MATLAB神经网络编程》 化学工业出版社 读书笔记 第六章反馈型神经网络 6.1 Hopfield网络 本文是《MATLAB神经网络编程》书籍的阅读笔记,其中涉及的源码、公式、原理都来自此书,若有不理解之处请参阅原书

其实我不会编程,只会脸滚键盘 1万+

matlab的命令,Matlab常见命令(一)

1. echo,echo on, echo off:脚本文件执行时,控制脚本文件内容是否在Command窗口显示;2. disp(变量): 显示变量的结果。3. 路径搜索顺序:Matlab收到命令时,先检查是否为当前Matlab工作区中存在的变量名/内置函数名->是否为有效搜索路径下的脚本名。4. item = input('Enter the number of item ') 提示用户输...

weixin_28744423的博客 1037

数字图像处理(MATLAB版)---读书笔记二

<br />一切都是数组<br /> 数组有一维,一般称之为向量;二维数组也就是矩阵 ...<br /><br />一、一维向量<br />1. 一维向量的定义<br />如下产生一个列向量u<br />>> u= [1;2;3;4;5]  //用分号分隔<br />u =<br />     1<br />     2<br />     3<br />     4<br />     5<br /> <br />以下的几种方法等价的产生一个行向量v<br />>> v = [1,2,3,4,5]<br

liusj2003的专栏 1604

MATLAB神经网络编程(三)——线性神经网络的构建与实现

《MATLAB神经网络编程》 化学工业出版社 读书笔记 第四章 前向型神经网络 4.2 线性神经网络 本文是《MATLAB神经网络编程》书籍的阅读笔记,其中涉及的源码、公式、原理都来自此书,若有不理解之处请参阅原书。

其实我不会编程,只会脸滚键盘 3971

echo on 和 echo off

echo on 打开回显echo off 关闭回显 (关闭则执行过程不会显示)eg:@echo offtitle Acolor 0Becho %date%echo.echo %time%pause直接显示结果:日期 时间@echo ontitle Acolor 0Becho %date%echo.echo %time%pause显示每一步的返回结果...

u012890925的专栏 8176

MATLAB模糊控制器

《MATLAB/Simulink系统仿真超级学习手册》石良臣 matlab2018a——模糊控制器

m0_62299908的博客 2万+

Matlab常见命令(一)

1. echo,echo on, echo off:脚本文件执行时,控制脚本文件内容是否在Command窗口显示; 2. disp(变量): 显示变量的结果。 3. 路径搜索顺序:Matlab收到命令时,先检查是否为当前Matlab工作区中存在的变量名/内置函数名->是否为有效搜索路径下的脚本名。 4. item = input('Enter the number of item ') 提示

hbyzl的专栏 1166

map-obj:将对象键和值映射到新对象

map-obj 将对象键和值映射到新对象 安装 $ npm install map-obj 用法 const mapObject = require ( 'map-obj' ) ; const newObject = mapObject ( { foo : 'bar' } , ( key , value ) => [ value , key ] ) ; //=> {bar: 'foo'} const newObject = mapObject ( { FOO : true , bAr : { bAz : true } } , ( key , value ) => [ key . toLowerCase ( ) , value ] ) ; //=> {foo: true, bar: {bAz: true}} const newObject = mapObject ( { FOO : tru

BitLocker加密盘解密实战:从隐藏分区到密钥恢复的全过程

本文深入探讨了BitLocker加密盘在密钥丢失或遗忘情况下的解密实战方法。文章系统性地介绍了从理解加密机制、制作取证镜像,到深度扫描隐藏分区、分析内存转储寻找密钥残留,最终利用恢复密钥解锁加密卷的全过程。重点剖析了非标准恢复路径,为数据恢复和数字取证工作提供了专业的技术框架和实战思路。

weixin_29268385的博客 332

MATLAB学习一本通 读书笔记二

变量名大小写敏感 局部变量存在于该函数调用中,全局变量需要使用global进行声明 汉宁窗,低版本用hann替代hanning 1.文件只是一串排列的指令集合 2.变量存在工作区,不关闭软件,不清除不会删除 3.函数与文件的区别,函数变量为局部,执行完之后将被清除 4.向量化,应用于matlab的循环执行语句? 5.跨空间变量传递用asignin,我们用的是save为mat文件,再调用

weixin_37281967的博客 457

从零搭建风电场:手把手教你用WAsP+WindPRO完成风资源评估全流程

本文详细介绍了从零开始搭建风电场的全流程,重点讲解如何使用WAsP和WindPRO进行风资源评估和风场布局优化。内容包括软件配置、数据采集规范、风图谱建模实战、机组选型策略以及常见问题解决方案,帮助工程师掌握风电开发的核心技术,提升项目成功率。

year5的博客 370

数字滤波器的MATLAB和FPGA实现-读书笔记 (1/3)

数字滤波器的MATLAB和FPGA实现-读书笔记 (1/3)

qq_42061637的博客 1198

关于StartAI本地部署相关问题解答

很多小伙伴们都有接入自己本地SD的需求,对此小编整理了一些相关问题~

HDJ9387的博客 940

Android14到Android16源码移植中的Bluetooth模块规范适配指南

本文详细解析了从Android14到Android16源码移植过程中Bluetooth模块的规范适配挑战,重点介绍了Android.bp配置差异及常见编译报错解决方案。针对代码规范检查、final字段声明、静态方法优化等核心问题提供实用修复方法,帮助开发者高效完成版本升级适配工作。

fire9的博客 254

MATLAB 一本通 读书笔记 四 (补充)

原本罗列的需要看的章节,结果返回去竟然没有对应的章节,鬼知道当时看目录的时候跳到哪里去了。因此用网上资料尝试剩下文件读写和信号处理两章。

weixin_37281967的博客 448

Altium Designer(AD)的简易使用

一、绘制原理图、原理图库 首先来说明原理图的概念。 根据百度百科,原理图,顾名思义就是表示电路板上各器件之间连接原理的图表。也就是表示芯片上的引脚连接什么元件,各个元件谁和谁相连,电源电压的大小之类的。​ 再来说一下原理图和原理图库的区别和联系。 原理图是某个产品的原理图设计文件;原理图库是设计原理图时用到的电子元件的电路符号的集合。绘制PCB板时先设计原理图即建立原理图文件,而在原理图文件中设计原理图前必须将原理图库文件加载到原理图编辑环境才能使用其中的电路符号。 接下来说明如...

qq_52630607的博客 2万+

MATLAB Linear Algebra 读书笔记

MATLAB Linear Algebra Springer & Apress 1 MATLAB Introduction and Working Environment Bessel function  (贝塞尔函数) besselj(0,11.5) Symbolic Calculations //展开袋鼠表达式 syms x; expand(((x + 1)

jiangdmdr的专栏 1009

CST高阶技巧:用周期性边界快速仿真共面波导色散特性(含JDM求解器优化)

本文详细介绍了在CST仿真软件中,利用周期性边界条件结合JDM本征模求解器,高效分析共面波导色散特性的高阶技巧。该方法通过仿真一个单元胞而非整条传输线,大幅提升计算效率,并提供了从建模、边界设置、求解器优化到后处理的完整工作流程,是高频电路设计的实用指南。

weixin_29280219的博客 402

PyQt5开发编译器安装(PyCharm安装)

PyCharm 提供了最完整的 PyQt5 开发体验,特别是其集成的调试工具和 Qt Designer 支持,能显著提高开发效率。是最受欢迎和功能最完整的 IDE。它专门为 Python 开发优化,对 PyQt5 有很好的支持。右键运行该文件,如果出现窗口说明配置成功。对于 PyQt5 开发,

啊渊的专栏 416

MATLAB数学建模方法与实践(第3版)——读书笔记

MATLAB数学建模方法与实践(第3版)——读书笔记1.数学建模的五类问题2.MATLAB快速入门2.1从问题到发布脚本2.2matlab提高3.数据建模技术3.1数据的获取、分析、预处理3.1.1数据读取3.1.2数据预处理3.1.3数据的统计基本描述性统计分布描述性统计3.1.4数据可视化3.1.5数据降维PCA:使得众多相关的变成较少的无关的变量。相关系数降维3.2常用的数据建模方法3.2.1回归一元线性回归一元非线性回归多元回归逐步回归logistic回归(预测)3.2.2机器学习分类聚类小结3.2

qq_44809326的博客 9268

Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)

CloudScraper是一个专门用于绕过Cloudflare反机器人保护的Python库,它基于requests库构建,能够处理Cloudflare的5秒盾、WAF和人机验证等防护机制。

数据知道的博客 1万+

matlab的fir1的ftype,数字滤波器的matlab与FPGA实现读书笔记(二)FIR滤波器的matlab设计(窗函数)...

FIR滤波器的matlab设计采样fir1函数设计b= fir1(n,wn),b= fir1(n,wn,’ftype’)b= fir1(n,wn,’ftype’,window)b= fir1(…,’noscale’)函数参数说明b:返回的FIR滤波器单位脉冲响应,脉冲响应为偶对称,长度为n+1n:滤波器的阶数,需要注意的是,设计出的滤波器长度为n+1.wn:滤波器的截至频率,;需要注意的是,wn的...

weixin_39717443的博客 970

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MATLAB函数-MATLAB编程第二版读书笔记

本文是MATLAB编程第二版-第五章MATLAB函数的读书笔记

m0_56348460的博客 888

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

如何阅读matlab项目并调试运行成,【转】读书笔记:MATLAB

MATLAB(01)今天开始写读书笔记,第一本书是《高等应用数学问题的MATLAB求解》。MATLAB语言是科学研究者首选的计算机数学语言。大多数学生缺乏对应用数学问题的全面了解,不清楚什么问题能用数学描述,什么样的数学问题能求解,以至于走了很多弯路。通过学习MATLAB语言可以使数学问题求解能力显著提高,即使对某些数学公式理解不够深刻,只要学习了MATLAB语言也能容易地求解类似问题,毕竟科学研...

weixin_29415575的博客 291

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: Err:1 http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu xxxxxx 404 Not Found [IP: 101.6.8.193 80]
下一篇: 自控原理-matlab
一只菜鸡儿
博客等级 码龄7年 37粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值