入门到精通10天学会matlab教程 一起学习它的强大的数学计算能力和绘图能力

人气:139 ℃/2023-12-06 22:15:28

1、系统知识

MATLAB乘法一般进行的是矩阵运算,点运算是矩阵里的元素运算。

比如

​ a=[1 2 3 4];

​ b=[2 2 2 2];

​ 对应元素相乘就是

​ a.*b=[2 4 6 8];

​ 如果直接写

​ a*b会报错,因为直接写*就是矩阵乘法,a的列数不等于b的行数,不能相乘

>> who您的变量为:a y >> whos Name Size Bytes Class Attributes a 1x12 96 double y 3x4 96 double

2、常用数学函数

1.三角函数和双曲函数

2.指数函数

注: pow2(x)=x^2 pow2(x,y)=x^y

3.复数函数

4.圆整函数和求余函数

5.矩阵变换函数

6.其他函数

3、画图

格式设置

subplot(m,n,p) %表示创建m行n列个子图,在第p个子图上画图

此 MATLAB 函数 使用默认属性值创建一个新的图窗窗口。生成的图窗为当前图窗。

plot - 二维线图

plot(X, Y, LineSpec)

其中X由所有输入点坐标的x值组成,Y是由与X中包含的x对应的y所组成的向量。LineSpec是用户指定的绘图样式,主要选项如下:

Specifier

Line Style*(线型)*

实线(默认样式)虚线(短划线)

:

点线

-.

点划线

Specifier

Marker*(坐标点样式)*

o

加号

*

星号

.

x

十字

s

正方形

d

菱形

^

上指向三角形

v

下指向三角形

>

右指向三角形

<<o:p>

左指向三角形

p

五角星

h

六角形

Specifier

Color

y

黄色

m

品红

c

蓝绿色

r

红色

g

绿色

b

蓝色

w

白色

k

黑色

例如:’–or’表示坐标点为圆圈标志,且线型为红色短划线的绘图样式。

plot3 - 三维点或线图

此 MATLAB 函数 绘制三维空间中的坐标。 要绘制由线段连接的一组坐标,请将 X、Y、Z 指定为相同长度的向量。 要在同一组坐标轴上绘制多组坐标,请将 X、Y 或 Z 中的至少一个指定为矩阵,其他指定为向量。

plot3(X,Y,Z)

meshgrid - 二维和三维网格

​ 此 MATLAB 函数 基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一个矩阵,每一行是 x 的一个副本;Y 也是一个矩阵,每一列是 y 的一个副本。坐标 X 和 Y 表示的网格有 length(y) 个行和 length(x) 个列。

[X,Y] = meshgrid(x,y)

mesh - 网格曲面图

​ 此 MATLAB 函数 创建一个网格图,该网格图为三维曲面,有实色边颜色,无面颜色。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。边颜色因 Z 指定的高度而异。

x = 0:0.1:1;[x,y] = meshgrid(x);z = sin(y).*cos(x) ;mesh(x,y,z)

surf - 曲面图

此 MATLAB 函数 创建一个三维曲面图,它是一个具有实色边和实色面的三维曲面。该函数将矩阵Z 中的值绘制为由 X 和 Y 定义的 x-y 面中的网格上方的高度。曲面的颜色根据 Z 指定的高度而变化。

x = 0:0.1:1;[x,y] = meshgrid(x);z = sin(y).*cos(x) ;surf(x,y,z)

bar - 条形图

此 MATLAB 函数 创建一个条形图,y 中的每个元素对应一个条形。如果 y 是 m×n 矩阵,则bar 创建每组包含 n 个条形的 m 个组。

bar(y)bar(x,y)

barh - 水平条形图

​ 此 MATLAB 函数 创建一个水平条形图,每个条形对应 y 中一个元素。如果 y 是 m×n 矩阵,则 barh 创建每组包含 n 个条形的 m 个组。

barh(y)barh(x,y)

histogram - 直方图

​ 直方图属于数值数据的条形图类型,将数据分组为 bin。创建 Histogram 对象后,可以通过更改直方图的属性值修改它的各个方面。这对快速修改 bin 属性或更改显示特别有用。

histogram(X)histogram(X,nbins)

4、解方程式

求解多项式

对于一个多项式,假如其系数为P=[2,2,3,5],即

则其根为x = roots§

求解线性方程组

求解线性方程式的解

用下列代码

a = [2,3,-1;8,2,3;45,3,9];b = [2;4;23];x = inv(a)*b %inv(a)表示a矩阵的逆矩阵

求定积分

使用integral函数,下面是求f在[0,1]上的积分

f = @(x) x.*log(1 x)integral(f,0,1)

5、format命令

matlab中专用命令 format用于针对数据的显示形式进行控制,但该命令不影响数据的储存形式和计算精度

format:设置输出格式

对浮点性变量,缺省为format short。另外,format short, long不影响整型变量的显示。

format 默认格式format short 5字长定点数,显示5位(scaled fixed point format with 5 digits)format long 15字长定点数,显示15位双精度,7位单精度(scaled fixed point)format short e 5字长浮点数format long e 15字长浮点数format hex 16进制format bank 定点货币形式format rat 小数分数表示format +,-,空格format compact 压缩空格format loose 包括空格和空行format long 15字长定点数format short e 5字长浮点数format long e 15字长浮点数format short g 5位定点或浮点格式。format long g 对双精度,显示15位定点或浮点格式,对单精度,显示7位定点或浮点格式。

6、矩阵

创建矩阵

矩阵中的元素可以用下标或者序号表示,下列矩阵A中5可以用A(2,2)或者A(5)(竖着数)表示。

1 2 3

4 5 6

7 8 9

利用冒号获取子矩阵

子矩阵是指由矩阵中的一部分元素构成的矩阵。我们既可以用冒号表达式作为引用矩阵的下标吗,也可以直接用单个的冒号来作为行下标或列下标,其代表全部行或全部列。则有先关概念如下:A(i,:) 第i行的全部元素A(:,j) 第j列的全部元素A(i:i m,k:k m) 第i~i m行内,且在第k~k m列中的所有元素A(i:i m,:) 第i~i m行的全部元素%创建3行5列的矩阵A>> A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]A =1 2 3 4 56 7 8 9 1011 12 13 14 15%利用冒号表达式获得子矩阵,其表达的是矩阵中第1、2行的元素。>> A(1:2,:)ans =1 2 3 4 56 7 8 9 10%表示引用矩阵第2、3行的第1、3、5列的元素>> A(2:3,1:3:5)ans =6 8 1011 13 15我们还可以用一般向量和end运算符来作为下标,从而获得子矩阵。end表示某一维的末尾元素下标。例如:%创建4行5列的矩阵A>> A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20];>> A(end,:) %引用矩阵A的最后一行元素ans =16 17 18 19 20%表示引用第1、4行的第3到最后一列元素>> A([1,4],3:end)ans =3 4 518 19 20

reshape - 重构矩阵

可以利用reshape命令来改变矩阵的形状

>> a = [1,2,3,4,5,6,7,8,9,10,11,12];>> y = reshape(a,3,4)y =1 4 7 102 5 8 113 6 9 12

7、创建函数

function

创建脚本后使用function创建函数function - 声明函数名称、输入和输出此 MATLAB 函数 声明名为 myfun 的函数,该函数接受输入 x1,...,xM 并返回输出y1,...,yN。此声明语句必须是函数的第一个可执行代码行。有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。function [y1,...,yN] = myfun(x1,...,xM)

下面为创建函数的例子

在名为 stat.m 的文件中定义一个函数,该函数返回输入向量的均值和标准差。function [m,s] = stat(x)n = length(x);m = sum(x)/n;s = sqrt(sum((x-m).^2/n));end从命令行调用该函数。values = [12.7, 45.4, 98.9, 26.6, 53.1];[ave,stdev] = stat(values)ave =47.3400stdev =29.4124

匿名函数

f = @(x)表示f是关于x的函数,f = @(x,y,z)表示f是关于x,y,z的函数

匿名函数名 = @(输入参数) 匿名函数表达式f = @(x) x.*log(1 x) %后面写f的表达式

8、TXT文本操作

数值型文本读取

假如score.txt中数值文本如下0.13 68 990.05 90 800.17 99 650.08 90 92

下面为读取数据

data = load('score.txt'); %load只支持读取全是数值的文本w = data(:,1); %读取第一列数据s = data(:,2:3); %读取第二三列数据

字符型文本读取

假若swords.txt内容如下:

刘正风包惜弱东方不败小龙女杨过李长寿老子李长庚赵公明

全是字符的文本使用fopen打开

>>fid = fopen('swords.txt','r'); %fid是句柄>>t1 = fgetl(fid) %读取第一行t1 =刘正风>>t2 = fgetl(fid) %读取第二行t2 =包惜弱>>t3 = fgetl(fid) %读取第三行t3 =东方不败>>t = [t1(1) t2(3) t3(1)]t =刘弱东>>fclose(fid); %最后需要关闭

TXT文本写入

fid = fopen('bill.txt','w');fprintf(fid,'京西商城月账单\n\n');fprintf(fid,'电子 -20000\n');fprintf(fid,'包包 %d\n',-1200);fprintf(fid,'%s %d\n\n','服装',-24000);fprintf(fid,'账目细节\n');detail = -[845 832.5 836 872.2 825 844];fprintf(fid,'%-5d %5.1f\n',[1:6;detail]); % %-5d表示占5个字符,左对齐 ]是右对齐

bill.txt的文本如下:

京西商城月账单电子 -20000包包 -1200服装 -24000账目细节1 -845.02 -832.53 -836.04 -872.25 -825.06 -844.0

9、Excel文本数据操作

读取

>>data = xlsread('data.xlsx','Sheet1','A3:C5') %分别为 文件名 表名 读取数据区域%例如读取出来的数据为data =NaN 81NaN 3595 77>>data(isnan(data)) = 0 %把为NaN的值赋为0data =0 810 3595 77

写入

>>xlswrite('RS.xlsx',{'T','W'},'Sheet1','B1:C1'); % T W为写入的数据>>XYZ = {'X','Y','Z';6 6 4;8 7 5};>>xlswrite('RS.xlsx',XYZ','Sheet1','A2:C4');

结语

喜欢机器学习的小伙伴可以多多点赞关注哦~

百科

More+
首页/电脑版/网名
© 2026 NiBaKu.Com All Rights Reserved.