MATLAB基础学习笔记

MATLAB是一种用于数值计算和编程的高级环境,支持矩阵操作、复数运算、数据类型的转换以及各种数组和矩阵功能。文章详细介绍了MATLAB的基本语法,包括常变量、复数、特殊变量和矩阵运算,还讨论了如何处理数组信息、字符串、计时函数以及关系和逻辑运算。此外,文章还提到了MATLAB的绘图功能和一些实用的小技巧。
摘要由CSDN通过智能技术生成

matlab简介

MATLAB(矩阵实验室)是由美国 MathWorks 公司开发的第四代高层次的编程语言和交互式环境数值计算,可视化和编程;
MATLAB 允许矩阵操作、绘制函数和数据、算法实现、创建用户界面;
MATLAB 能和在其他语言,包括 C、C++、Java 和 Fortran 语言编写的程序接口;
MATLAB 可以分析数据、开发算法、建立模型和应用程序;
MATLAB 拥有众多的内置命令和数学函数,可以帮助您在数学计算,绘图和执行数值计算方法。

matlab基本语法

常变量

每个MATLAB变量可以是数组或者矩阵。当表达式返回一个结果,不分配给任何变量,系统分配给一个变量命名ans。

>>sqrt(78)
ans =
    8.8318

默认情况下,MATLAB 存储所有数值变量为双精度浮点值。其他数据类型存储文本,整数或单精度值或单个变量中相关数据的组合。
MATLAB提供15种基本数据类型,矩阵或数组的最小值是0到0,并且是可以到任何大小的矩阵或数组。

数据类型 /转换函数8位有符号整数
int8/int8()8位有符号整数
uint8/uint8()8位无符号整数
int1616位有符号整数
uint1616位无符号整数
int3232位有符号整数
uint3232位无符号整数
int6464位有符号整数
uint6464位无符号整数
single单精度数值数据
double双精度数值数据
logical逻辑值为1或0,分别代表true和false
char字符数据(字符串作为字符向量存储)
单元格阵列索引单元阵列,每个都能够存储不同维数和数据类型的数组
结构体C型结构,每个结构具有能够存储不同维数和数据类型的数组的命名字
函数处理指向一个函数的指针
用户类用户定义的类构造的对象
Java类从Java类构造的对象

复数

复数包括实部和虚部,用特殊变量 ‘i’ 或 ’j’ 表示,注意编程时不要将 i 和 j 变量另外赋值。

>> z=3+4j
z =3.0000 + 4.0000i
函数说明
real(z)返回实数z的实部
imag(z)返回实数z的虚部
conj(z)返回z的共轭复数
angle(z)返回复数z的幅角
abs(z)返回复数z的模
complex(a,b)以a和b作为实部和虚部,创建复数

特殊变量

NameMeaning
ans默认的变量名,以应答最近依次操作运算结果
eps浮点数的相对误差
i,j虚数单位,定义为 i2 = j2 = -1
Inf/INF代表无穷大
NaN/nan代表不定值(不是数字)
pi圆周率
nargin函数的输入变量数目
nargout函数的输出变量数目
realmin最小的可用正实数
realmax最大的可用正实数

矩阵和数组

包含空数组(empty array),标量(scalar),向量(vector),矩阵(matrix),数组(array)。
创建矩阵
行内元素空格或逗号隔开,行与行之间分号或回车隔开,元素可以是数值或表达式

>>a=[]					%空矩阵
>>a = from:step:to		%开始:步长:结束
>>a=linspace(a,b,n)		%生成线性等分向量
>>a=logspace(a,b,n)		%生成对数等分向量
>>a=[1:4;9,-1,6,3]

多维数组

cat(,p1,p2)		%将p1、p2等数组按照某维连接起来
reshape(p,[行 列 页])	%按照行列页重排多维数组p
permute(p,[列 行 页]	%按照列页行重定义多维数组p

特殊矩阵

函数名功能
magic(N)产生N阶魔方矩阵(矩阵的行、列和对角线上元素的和相等)
eye(m,n)产生m * n的单位矩阵,对角线全为1
zeros(d1,d2,d3,…)产生d1 * d2 * d3的全零数组
ones(d1,d2,d3,…)产生d1 * d2 * d3的全1数组
rand(d1,d2,d3,…)产生均匀分布的随机数组,元素取值范围0.0到1.0
randn(d1,d2,d3,…)产生正态分布的随机数组
操作数组
数组赋值,元素赋值时,如果行或者列超出矩阵的大小,则自动扩充矩阵。
全下标: a(i,j)=b
单下标: a(n)=b
全元素: a=b
矩阵的合并
>>c=[a b]		%将矩阵a和b水平方向合并为c
>>c=[a;b]		%将矩阵a和b垂直方向合并为c

数组元素的删除

>>x(:,3)=[]		%删除一列元素
>>x=[]		%删除所以元素为空矩阵

矩阵和数组功能函数
数组翻转函数

>>flipud(x)			%使x沿水平轴上下翻转
>>fliplr(x)			%使x沿垂直轴左右翻转
>>flipdim(x,dim)	%使x沿特定的州旋转,dim=1,行旋转,dim=2,列旋转
>>rot90(x,k)		%使x逆时针旋转k*90°

数组查找函数

[a,b,...] = find(x)
n=find(x)
a=[1 2 3;4 5 6]
[n,m]=find(a == 3)
z=find(a == 3)

数组统计函数

max(x)			%数组中各列的最大值
min(x)			%数组中各列的最小值
mean(x)			%数组中各列的平均值
std(x)			%数组中各列标准差
median(x)		%数列中各列的中间元素
var(x)			%数列中各列的方差
[s,k]=sort(x,n,mode)%k为s元素的原位置,mode是排序方式,'ascend'是升序
sum(x,dim)		%计算向量元素的和,dim指对应的维

下表列出了MATLAB用于工作数组、矩阵和向量的各种命令:

命令作用/目的
cat连接数组
length计算元素数量
linspace创建间隔向量
logspace创建对数间隔向量
max返回最大元素
min返回最小元素
prod计算数组元素的连乘积
reshape重新调整矩阵的行数、列数、维数
size计算数组大小
sort排序每个列
sum每列相加
eye创建一个单位矩阵
ones生成全1矩阵
zeros生成零矩阵
cross计算矩阵交叉乘积
dot计算矩阵点积
det计算数组的行列式
inv计算矩阵的逆
pinv计算矩阵的伪逆
rank计算矩阵的秩
rref将矩阵化成行最简形
cell创建单元数组
celldisp显示单元数组
cellplot显示单元数组的图形表示
num2cell将数值阵列转化为异质阵列
deal匹配输入和输出列表
iscell判断是否为元胞类型

矩阵算术运算

矩阵作用
A+B/A-B加减运算
A * B乘法运算,A列等与B行
A \ B 或 A / B左除或右除
A ^ B矩阵乘方
A’矩阵A的转置
数组作用
A. *B数组A和数组B对应元素相乘
A. /B数组A除以数组B的对应元素
A. ^B数组B除以数组A的对应元素
A. ’数组A的转置

稀疏矩阵

创建稀疏矩阵

sparse(i,j,s,m,n)			%直接创建稀疏矩阵
%i,j是非零元素行列下标,s是向量,m,n是行列维数
sparse(p)					%由全元素矩阵p转换为稀疏矩阵
函数名功能
nnz返回稀疏矩阵非零元素个数
nonzeros返回一个包含所以非零元素的列向量
nzmax返回最大的非零元素个数
spy用图形观看稀疏矩阵的非零元素分布情况

数组信息的获取

数组尺寸获取

函数名功能
sized=size(A) %以行向量d表示A数组各维尺寸 。[m1,m2,…]=size(A) %返回数组A的各维尺寸
length返回数组A各维中最大维的长度
ndims返回数组A的维数
numel返回数组A的元素总个数

字符串

创建字符串

s1='matlab 7.3'
s2='显示'''matlab'''	%使用''来输出‘
str=[s1,' ',s2]

字符串函数
strcat(s1,s2,…) %将s1,s2合并成一个长字符串
char(s1,s2,…) %将s1,s2合并成一个字符数组
strvcat(s1,s2,…) %将s1,s2合并成一个字符数组
字符串与数值转换函数表

函数名功能
abs将字符串转换成ASCII码数值
double将字符串转换成ASCII码数值 的double数值
str2num将字符串转换为数值
str2double将元胞字符串数组转换为数值
hex2num将IEEE格式十六进制字符串转换为双精度型数值
hex2dec将十六进制字符串转换为整型
bin2dec将二进制转换为十六进制
base2dec将任意进制字符串转换为十进制数
num2str将数值转换为字符串
mat2str将矩阵转换为字符串
dec2hex将正整数转换为十六进制字符串
dec2bin将正整数转换为二进制字符串
dec2base将正整数转换为任意进制字符串
char将数值整数部分转换为ASCII码等值的字符
常用字符串函数表
函数功能
strcmp(s1 ,s2)比较两个字符串是否相等,相等为1不等为0
strncmp(s1 ,s2 ,6)比较两个字符串的前n个字符是否相等,相等
strcmpi(s1,s2)与strnemp功能相同,只是忽略大小写
strncmpi(s1 ,s2 ,6)与strncmp功能相同,只是忽略大小写
strmatch(s1,strvcat(s1 ,s2))在字符数组中,查找匹配字符所在的行数
findstr(s1 ,‘t’)在字符串中查找另一字符串的位置
strtok(s1, ’ ‘)查找字符串中第一个分隔符(包括空格、Enter和Tab键)
lower(s1 )将字符串转换为小写
upper(s1 )将字符串转换为大写
strjust([s1,’ '],'right)对齐字符串(左对齐、右对齐、居中)
strrep(s1 ,‘7.3’,‘6.5’)将字符串中的部分字符用新字符串替换
eval(‘2*3’)执行字符串
double(‘a’)将字符型转换为其ASCII码的数值

计时函数

函数命令
cputime程序执行时间等于代码执行结束cputime-代码执行前cputime
tic/toctic启动计时器,toc终止计时器,并返回程序运行时间
etimet0 =clock,t1=clock,etime(t1,t0)返回t0到t1时间

关系运算

< 、<= 、> 、>=、== 、(等于)~=(不等于)

逻辑运算

logical函数将数值型转换为逻辑型
元素的逻辑运算
&(与)、|(或)、~(非)、xor(异或)
先决逻辑运算
A && B: 当A为0(false)时,直接得出逻辑结果为0,否则继续执行&运算
A || B 当A为1时,直接得出逻辑运算结果为1
位逻辑运算
bitand(位与),bitor(位或),bitcmp(位非)、bitxor(位异或)

命令

MATLAB提供管理会话的各种命令。如下表所示:

命令目的/作用
clc清除命令窗口。
clear从内存中删除变量。
exist检查存在的文件或变量。
global声明变量为全局。
help搜索帮助主题。
lookfor搜索帮助关键字条目。
quit停止MATLAB。。
who列出当前变量。
whos列出当前变量(长显示)
使用MATLAB的时候有一些系统命令可以方便我们的操作,如在当前的工作区中可以使用系统命令保存为一个文件、加载文件、显示日期、列出目录中的文件和显示当前目录等。
命令目的/作用
cd改变当前目录。
date显示当前日期。
delete删除一个文件。
diary日记文件记录开/关切换。
dir列出当前目录中的所有文件。
load从工作区加载一个文件中的变量。
path显示搜索路径。
pwd显示当前目录。
save保存在一个文件中的工作区变量。
type显示一个文件的​​内容。
what列出所有MATLAB文件在当前目录中。
wklread读取.wk1电子表格文件。
MATLAB输入和输出命令
命令作用/目的
disp显示一个数组或字符串的内容。
fscanf阅读从文件格式的数据。
format控制屏幕显示的格式。
fprintf执行格式化写入到屏幕或文件。
input显示提示并等待输入。
;表示语句结束,不输出结果
fscanf和fprintf命令的行为像C scanf和printf函数。他们支持格式如下代码:
格式代码目的/作用
%s输入/输出字符串
%d输入/输出整数
%f输入/输出整数
%e输出科学计数法形式
%g%f 和%e 的结合,根据数据选择适当的显示方式
用于数字显示格式的函数有以下几种形式:
Format函数最多可显示
format short四位十进制数(默认)
format long15位定点表示
format short e五位浮点表示
format long e15位浮点表示
format bank两个十进制数字
format +正,负或零
format rat有理数近似
format compact变量之间没有空行
format loose变量之间有空行
MATLAB绘图命令
命令作用/目的
axis人工选择坐标轴尺寸
fplot智能绘图功能
grid显示网格线
plot生成XY图
print打印或绘图到文件
title把文字置于顶部
xlabel将文本标签添加到x轴
ylabel将文本标签添加到y轴
axes创建轴对象
close关闭当前的绘图
close all关闭所有绘图
figure打开一个新的图形窗口
gtext通过鼠标在指定位置放注文
hold保持当前图形
legend鼠标放置图例
refresh重新绘制当前图形窗口
set指定对象的属性,如轴
subplot在子窗口中创建图
text在图上做标记
bar创建条形图
loglog创建双对数图
loglog 创建双对数图
polar创建极坐标图像
semilogx创建半对数图(对数横坐标)
semilogy创建半对数图(对数纵坐标)
stairs创建阶梯图
stem创建针状图

matlab小tips

MATLAB使用save命令保存工作区中的所有变量,然后作为一个扩展名为.mat的文件,在当前目录中,使用load进行加载。

save myfile
load myfile

长任务可以通过使用省略号(…)延伸到另一条线路,例如。

final_velocity = initial_velocity ...
    + acceleration * time
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值