IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> matlab简介(下) -> 正文阅读

[数据结构与算法]matlab简介(下)

数据与函数的可视化

plot指令的基本调用方式

(1)plot(x)

x为向量时,以该元素的下标为横坐标、元素值为纵坐标绘出曲线。
x为实数二维数组时,则按列绘制每列元素值相对其下标的曲线,曲线数等于x数组的列数。
x为复数二维数组时,则按列分别以数组的实部和虚部位横、纵坐标绘制多条曲线。

(2)plot(x,y)

x、y为同维数组时,绘制以x、y元素为横纵坐标的曲线。
x为向量,y为二维数组、且其列数或行数等于x的元素数时,绘制多条不同颜色的曲线。
x为二维数组,y为向量时,情况与上相同,只是y仍为纵坐标。

(3)plot(x1,y1,x2,y2...)

绘制以x1为横坐标、y1位纵左边的曲线1,以x2位横坐标,y2位纵坐标的曲线2,等等。
其中x为横坐标,y为纵坐标,绘制y = f(x)函数曲线。

x = 0:pi/100:2*pi;
y = 2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y)

多次叠绘、双纵坐标和多子图

多次调用plot命令在一幅图上绘制多条曲线,需要hold指令的配合
hold on 保持当前坐标轴和图形,并可以接受下一次绘制
hold off 取消当前坐标轴和图形保持,调用plot绘制完全新的图形,不保留以前的坐标格式、曲线

多子图
matlab允许在同一窗口布置几幅独立的子图,具体指令
subplot(m,n,k)
subplot(‘position’,【left,bottom,width,height】)

subplot(m,n,k)的含义,图形窗口包含(mxn)个子图,k为指定的当前子图的编号。

subplot(‘postion’, [left, bottom, width, height])用于手工指定子图位 置,指定位置的四元组采用归一化的标称单位,即认为整个图形窗 口绘图区域的高、宽的取值范围都是[0, 1],而左下角为(0,0)坐标。

绘制图形的辅助操作

曲线颜色控制符

数据点型控制符

?曲线的线性控制符、颜色控制符、数据点形控制符可以组合使用。

t=(0:15)*2*pi/15;

y=sin(t);

subplot(3,2,1), plot(t, y); title('Lins style is default')
subplot(3,2,2), plot(t, y, 'o'); title('Lins style is o')
subplot(3,2,3), plot(t, y, 'k:'); title('Lins style is k:')
subplot(3,2,4), plot(t, y, 'k:*'); title('Lins style is k:*')
subplot(3,2,5), plot(t, y, 'm-d'); title('Lins style is m-d')
subplot(3,2,6), plot(t, y, 'r-p'); title('Lins style is r-p')

常用的坐标指令?

?刻度、分格线和坐标框

grid on? ? ? 画出分格线?
grid off? ? ?不画出分格线

box on? ? ? ?控制加边框线
box off? ? ? ? 控制不加边框线

刻度设置:指令格式:set(gca, ‘xtick’, xs, ‘ytick’, ys)

图形标识

图形标识包括:图名(title)坐标轴名(xlabel、ylabel)图形文本注释(text)图例(legend)

简洁使用格式:title(s) xlabel(s) ylabel() legend(s) text(x,y,s)

字体样式设置:\fontname{arg} \arg \fontsize {arg} string
? ? ? ? ? ? ? ? ? ? ? ? string为要输出的字符串,其前边均为属性控制

上下角标的控制

希腊字母与特殊字符

t=(0:100)/100*2*pi;
y=sin(t);
plot(t, y)

text(3*pi/4,sin(3*pi/4), '\fontsize{16}\leftarrowsin(t) = .707 ')

text(pi, sin(pi), '\fontsize{16}\leftarrowsin(t) = 0 ')

text(5*pi/4, sin(5*pi/4), '\fontsize{16}sin(t)         
                             =  -.707\rightarrow','HorizontalAlignment','right')

其中:?‘HorizontalAlignment’, ‘right’设置图形标识 为水平右对齐

特殊图形

直方图(柱形图)---累计式? ?---分组式

水平直方图? ? ? ----累计实? ? ? ---分组式?

饼图pie,饼图用来表示各元素占总和的百分数。该指令的第二输出变量是与第一变量通常的0-1变量,使对应饼块突出。

离散杆图stem

极坐标图polar

三维绘图的基本操作

三维绘图指令plot3,三维绘图指令中,plot3最易于理解,它的使用参数和plot十分相似

图像文件的读写与图像显示

imread指令 -----读取图像文件
imshow指令-----显示图像
imwrite指令------保存图像

matlab命令的执行方式

交互式命令执行方式:逐条输入、逐条执行、操作简单、直观、但是速度慢

M文件的程序执行方式:将命令编成程序储存在一个文件中,依次运行文件中的命令,可以重复进行。

用matlab编写的程序称为M文件,M文件根据调用方式不同分为两类
? ? ? ? 命令文件(script file)? ? ? ?
? ? ? ? 函数文件(function file)

它们的扩展名都是.m

命令文件和函数文件的区别:

????????命令文件没有输入参数,也不返回输出参数,函数文件可以带输入参数,也可以返回输出参数。
????????命令文件对工作空间中的变量进行操作,文件中所有命令的执行结果也返回工作空间中;函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量也被清楚。
? ? ? ? 命令文件可以直接运行;函数文件不能直接运行,要以函数调用的方式来调用它。

程序控制结构

任何复杂的程序都可以由这三种基本结构构成:顺序结构、选择结构、循环结构

顺序结构:指按照程序中的语句的排列顺序依次执行,直到最后一个语句

1.数据的输入,从键盘输入数据,可以使用input函数来进行

A = input (提示信息,选项)

2.数据的输出,命令窗口输出函数主要有disp函数,其调用格式为disp(输出项)

A = ‘hello tom’
disp(A)

3.程序的暂停

程序执行过程中暂停,可用pause函数,其调用格式为:pause(延迟描述)

选择结构:根据给定的条件成立或不成立,分别执行不同的语句

1.if语句
(1)单分支if格式

if fix(x) == x?

? ? ? ? disp(x);

end

(2)双分支格式

if 条件

? ? ? ? 语句组1

else?

? ? ? ? 与剧组2

end

(3)多分支if语句

if 条件1

? ? ? ? 语句组1

elseif 条件2

? ? ? ? 语句组2

elseif 条件m

? ? ? ? 语句组m

else

? ? ? ? 语句组n

end

2.switch语句

switch 表达式

case 表达式1 语句组1

case 表达式2 语句组2 …

case 表达式m 语句组m

otherwise 语句组 n

end

3.try语句

try

语句组1

catch

语句组2

end

循环结构

1.for语句

for 循环变量 = 表达式1:表达式2:表达式3?

? ? ? ? 循环体语句

end

2.while语句

while条件

? ? ? ? 循环体语句

end

3.break和continue语句

一般配合if使用? break 用来终止循环执行,continue用来跳过循环中的某些语句

函数文件

函数文件是另一种形式的M文件,每一个函数文件都定义一个函数

函数文件的基本结构

函数文件由function语句引导,其基本结构为:

? ? ? ? function 输出形参表 = 函数名(输入形参表)

? ? ? ? ? ? ? ? 注释说明部分

? ? ? ? ? ? ? ? 函数体语句

注意:

1. 关于函数文件名
函数文件名通常由函数名再加上扩展名.m组成。 当函数文件名与函数名不同时,Matlab将忽略函数名而确认文件名 因此调用时使用函数文件名。
2. 关于注释说明部分 注释说明包括3部分:
① 紧随引导行之后以%开头的第一注释行。 这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor 关键词查询和help在线帮助时使用。
② 第一注释行及之后连续的注释行。 通常包括函数输入/输出参数的含义及调用格式说明等信息,构成全 部在线帮助文本。
③ 与在线帮助文本相隔一空行的注释行。 包括函数文件编写和修改的信息,如作者和版本等。
3.关于return语句
如果函数文件中插入了return语句,则执行到该语句就结束函数的执行,流程转到调用该函数的位置。通常也不适用return语句。

function [s,p] = fcircle(r)
 % FCIRCLE calculate the area and perimeter of a circle of radii r
 % r 圆半径
 % s 圆面积
 % p 圆周长
 
s = pi*r*r;
p = 2*pi*r;




# 调用

[s,p] = fcircle(10)

函数的嵌套使用

function f = factor(n)
if n<=1
 f = 1;
else
 f = factor(n-1)*n; %递归调用求(n-1)!
end

函数参数的可调性

函数所传递参数数目的可调性,即参数的数量可以改变。

在调用函数时,Matlab用两个预定义变量nargin和nargout分别记录 调用该函数时的输入实参和输出实参的个数。

function fout = charray(a,b,c)
if nargin == 1
 fout = a;end
if nargin == 2
 fout = a+b;end
if nargin == 3
 fout = (a*b*c)/2;
end

全局变量与局部变量

函数文件中的变量是局部变量

全局变量的作用域是整个matlab工作空间,所有函数都可以对它进行存取和修改

矩阵的分析与处理

常用的产生通用特殊矩阵的函数有

zeros:产生全0矩阵

ones:产生全1矩阵

eye:产生单位矩阵

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

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

矩阵结构变换

1.对角阵和三角阵
只有对角线上有非零元素的矩阵称为对角矩阵,在研究矩阵时, 有时候需要将矩阵的对角线上的元素提取出来形成一个列向量,有 时也需要用一个向量构造一个对角阵。

(1)提取矩阵的对角线元素函数:diag

A = [1,2,3;4,5,6];
 D = diag(A) 
 D = 
 1
 5

另一种形式:diag(A,k)提取第k条对角线的元素

D1 = diag(A,1)
 D =
 2 
 6

(2)构造对角矩阵
如果V是一个m个元素的向量,diag(V)将产生一个m×m对角矩阵, 其主对角线元素即为向量V的元素。

diag([1,2,-1,4])
 ans =
 1 0 0 0
 0 2 0 0
 0 0 -1 0
 0 0 0 4

例如: diag(1:3,-1)

ans =
 0 0 0 0
 1 0 0 0
 0 2 0 0
 0 0 3 0

矩阵求逆与线性方程组求解

对于一个方阵A,如果存在一个与其同阶的方阵B,使得: (I为单位矩阵) 则称B为A的逆矩阵,当然,A也是B的逆矩阵。求方阵A的逆矩阵可 调用函数inv(A)。

A = [1,-1,1;5,-4,3;2,1,1];
B = inv(A);
A*B
ans =
 1.0000 0 0
 -0.0000 1.0000 0
 -0.0000 0 1.0000

将包含n个未知数,由n个方程构成的线性方程组表示为:

A = [1,2,3;1,4,9;1,8,27];
b = [5,-2,6]’;
x = inv(A)*b        %x = A\b
x =
 23.0000
 -14.5000
 3.6667

矩阵行列式值

把一个方程看做一个行列式,并按行列式的规则求值,称为行列式 的值。在Matlab中,使用函数det(A)得到。

A = rand(5)
A =
 0.9501 0.7621 0.6154 0.4057 0.0579
 0.2311 0.4565 0.7919 0.9355 0.3529
 0.6068 0.0185 0.9218 0.9169 0.8132
 0.4860 0.8214 0.7382 0.4103 0.0099
 0.8913 0.4447 0.1763 0.8936 0.1389
B = det(A)
B =
 -0.0071

多项式

多项式由一个行向量表示
? ? ? ? 该向量元素是该多项式的系数
? ? ? ? 且按照降幂次序排列

如:多项式x 4-12x3+25x+116由行向量: p=[1 -12 0 25 116]表示。

>>p=[1 -12 0 25 116]
p =
 1 -12 0 25 116
>>r=roots(p)
r =
 11.7473 
 2.7028 
 -1.2251 + 1.4672i
 -1.2251 - 1.4672i

注意:matlab规定,多项式是行向量,根是列向量

已知多项式的根,求解多项式? 使用poly指令

>> pp=poly(r)
pp =
 1.0000 -12.0000 -0.0000 25.0000 
116.0000

多项式乘法(conv指令)

举例:多项式a(x)=x3+2x2+3x+4 和b(x)= x3+4x2+9x+16的乘积。

>> a=[1 2 3 4] ; b=[1 4 9 16];
>> c=conv(a, b)
c =
 1 6 20 50 75 84 64

多项式除法(deconv)

c(x)=x6+6x5+20x4+50x3+75x2+84x+64 除以b(x)= x3+4x2+9x+16

>> c=[1 6 20 50 75 84 64];
>> b=[1 4 9 16];
>> [q , r]=deconv(c , b)
q =
 1 2 3 4
r =
 0 0 0 0 0 0 0

多项式的导数

举例:求b(x)= x3+4x2+9x+16的导数。

>> b=[1 4 9 16];
>> d=polyder(b)
d =
 3 8 9
结果为: 3x2+8x+9

函数的数值导数

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 12:17:23  更:2021-12-05 12:20:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:40:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码