MATLAB使用教程
1 2 3 4 5 6 7 8 9 10 11 12 13
| 变量名区分大小写
clc可以清屏幕(清楚所有命令)
clear all(清楚右侧工作区的所有变量)
变量名必须以字母开头,不能使用标点,可用数字和下划线,长度不要超过63位
laoba='chihanbao'
%% 两个百分号加一个空格可注释当前行(有横线)
% 一个百分号加一个空格可注释当前行(无横线)
|
MATLAB数据类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 数字
+
-
*
/
字符串(用单引号圈出来)
s='lanzhou'
str=''
计算ASCLL码
abs(s)
将ASCLL码转为字符串
char(97)
把数字转换为字符串
num2str(65)
计算字符串长度(把空格也算入内)
length(str)
|
矩阵
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| A=[1 2 3; 4 5 2;3 2 7;4 6 8]
矩阵的转置(将行列互换)
B=A'
竖着将矩阵拉长
C=A(:)
求A矩阵的逆
D=inv(A)
形成一个10行5列3维度的全为0矩阵
E=zeros(10,5,3)
生成一个m行n列的均匀分布的0-1的随机数矩阵
rand(m,n)
生成一个m行n列的均值为0,方差为1的随机数正态分布矩阵
randn(m,n)
生成0,iMin,iMax区间内的m行,n列均匀的整数随机数矩阵
randi(iMax)
randi(iMax,m,n)
r=randi([iMin,iMax],m,n)
给矩阵的不同维度指定随机子矩阵
E(:,:,1)= randi(92)
E(:,:,2)= randi(14,10,5)
E(:,:,3)= randi([1,9],10,5)
|
元胞数组
1 2 3 4 5 6 7 8 9 10 11
| A=cell(1,6)
A{2}=eye(3)%
eye为生产一个3X3的对角线为1的矩阵,matlab索引从1开始,python从0开始
A{5}=magic(5)%
生成一个三阶幻方,每列每行及对角线的数之和都相等
B=A{5}
|
结构体
1 2 3 4 5 6 7 8 9 10 11
| books=struct('name',{{'machine learning','data mining'}},'price',[30 40])
books.name% 属性
books.name(1)
小括号取出来的是cell(相当于铅笔盒)
books.name{1}
中括号取出来的是字符串
|
矩阵构造与四则运算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| A=[1 2 3 4 5 6 7 8 9]
B=1:2:9
1至9,步长为2,输出为1,3,5,7,9
C=repeat(B,3,1)
竖着重复B矩阵3次,横着重读B矩阵1次
D=ones(2,4)
生成2行4列都为1的矩阵
C=A+B
D=A-B
E=A*B'
F=A. *B(A与B对应位置相乘)
G=A/b相当于G=A*B'
H=A'/B
|
矩阵的下标
1 2 3 4 5 6 7 8 9 10 11 12 13
| A=magic(5)
B=A(2,3)
C=A(3,:)
D=A(:,4)
(所有语言中指相应位置取全部)
matlab find
[m,n] = find (A>20) % 找到所有大于20的索引值,即第m列,第n行
|
程序结构
循环结构
for
for 循环变量 =初值:步长:终值
执行语句1
执行语句2
执行语句3
end
步长为1时可省略
求1^2^+2^2^+3^2^+4^2^+5^2^的和
1 2 3 4
| sum=0; for n =1:5 sum =sum +n^2; end
|
求1-5的西格玛阶乘的和
1 2 3 4 5 6 7
| sum=0; for i=1:5; p=1; for j=1:i p=p*j; sum=sum+p; end
|
while
while 条件表达式
执行语句1
执行语句n
end
【例5-11】求1+2+3+4+5…+10的和。
程序设计为:
1 2 3 4 5 6
| s=0; n=1; while n<=10 % 设置循环条件 s=s+n; n=n+1; end
|
【例5-12】设计一段程序,求1~100的奇数和。
程序设计为:
1 2 3 4 5 6
| x=1; sum=0; while x<101 sum =sum+x; x=x+2; end
|
分支结构
if…end结构
if 条件表达式
语句体1
end
【例5-13】用if.…end结构编写一段程序,要求满足条件时系统显示“成立”。
在MATLAB的命令窗口中设计的程序为:
1 2 3 4 5 6 7 8
| a=100; b=20; if a>b "成立" end 运行结果为: ans= 成立
|
if..…else…end结构
这种分支结构的格式为:
if 表达式
语句体1
else
语句体2
end
1 2 3 4 5 6 7 8 9 10 11
| a=100; b=20; if a>b "成立" else "不成立" end
运行结果为: ans = 成立
|
switch…case…end结构
switch..…case…end结构是通过与某个表达式的值进行比较,根据比较的结果做不同的选择,以实现程序的分支功能,它的结构格式为:
switch 表达式(数值或字符串)
case 数值或字符串1
语句体1;
case数值或字符串2
语句体2;
otherwise
语句体n;
end
switch后面表达式的值为数值变量或字符变量,
通过这些值与case后面数值或字符串的值进行比较,
与哪一个case的值相同就执行哪一个case下面的语句体,
如果与所有case的值都不相同,则执行otherwise下面的语句体。
otherwise语句可以省略,如果省略otherwise,
所有case都不满足时跳出分支结构,另外switch必须与end配对使用。
二维平面绘图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| x=0:0.01:2*pi; %x取值范围
y=sin(x); %函数
figure %建立一个幕布
plot(x,y) title('y=sin(x)') %题目 xlabel('x') %X标签 ylabel('sin(x)') %Y标签 xlim([0 2*pi]) %使图靠近边缘1
颜色|字符|颜色|字符 红|r粉红|m 蓝|b|白w 黄|y|黑k
实现 - ——————————
虚线 -- -------------------------- 冒号线 : .... .... .... .... ... 点画线 -. —— - —— - —— - ——
符号|点类型|示例|符号|点类型|示例 ·|点|
^|上三角| +|十字号|
v|下三角| o|圆圈|
<|左三角| *|星号|
|右三角| x|叉号|
|P|五角星| s|正方形|
|h|六角星|
d|菱形|
|
典例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| x=0:0.01:20;
y1=200 * exp(-0.05 * x).* sin(x);
y2=0.8* exp(-0.5 * x).* sin(10*x);
figure [AX,H1,H2]=plotyy(x,y1,x,y2,'plot');
set(get(AX(1),'Ylabel'),'String','Slow Decay') %左坐标区标签
set(get(AX(2),'Ylabel'),'String','Fast Decay') %右坐标区标签 xlabel('Time (\musec)') %\mu 希腊文 title('Multiple Decay Rates') set(H1,'LineStyle','--') %y1图像 set(H2,'LineStyle',':') %y2图像
|
三维立体绘图
1 2 3 4 5 6 7 8 9 10 11 12 13
| t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t) %三个方程组 xlabel('sin(t)')
ylabel('cos(t)') zlabel('t') %hold on 在同一张幕布中绘制多条线 %cvhidfjh ioe %hold off grid on % 打开网格
axis square %变成正方形
|
图像的保存与退出
1 2 3 4 5 6
| %(1)Edit-Copy Figure %(2)Toolbar→Save %(3)print'-depsc','-tiff','-r300','picturel') %(4)File→Export Setup
|
文件,另存为
编辑,复制图窗
编辑,图窗属性
文件,导出设置,设置宽为200,应用于两栏分设置
1 2 3 4
| [x,y,z]=peaks(30); %产生双峰函数
mesh(x,y,z) grid
|
图形窗口的分割
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| x=linspace(0,2 * pi,60); %拿到数据
subplot(2,2,1) % 绘制子图,将图幅划分为2行X2列,1指的是左上部分 plot(x,sin(x)-1);
title(sin(x)-1);axis([0,2 * pi,-2,0]) subplot(2,1,2) % 绘制子图,将图幅划分为2行X1列,2指的是下部分 plot(x,cos(x)+1);
title('cos(x)+1');axis([0,2 * pi,0,2]) subplot(4,4,3) % 绘制子图,将图幅划分为4行X4列,3指的是第1行第3列 plot(x,tan(x));
title('tan(x)');axis([0,2 * pi,-40,40]) subplot(4,4,8) % 绘制子图,将图幅划分为4行X4列,3指的是第2行第4列 plot(x,cot(x));
title('cot(x)');axis([0,2 * pi,-35,35])
|