Matlab
1.0 变量命名
1.1 注释
- %%独占一行的注释
- %普通注释
1.2 清空环境变量及命令
- clear all 清楚workspace中的所有变量
- clc 清楚Command Window中的所有变量
2.0 数据类型
2.1 数字
2 + 4
10-7
3*5
8/2
2.2 字符与字符串
s = 'a' %(单引号表示字符串)
abs(s)%ASCII码
char(97) %输出 a (ASCII码转字符串)
num2str(65) %输出数字65
str='I love MATLAB & Machine Learning'
length(str) %字符串长度
doc num2str
2.3 矩阵
A=[123;452;327]%数和数之间必须是分号才行
B(:,:,1) = rand(10,5)%生成均匀分布的伪随机数
3.0 元胞数组和结构体
3.1 元胞数组
3.2 结构体
%结构体
%name所带的{}独立于Machine Learning和Data Mining之外,作为一个单独的存在
books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])
books.name %属性,输出name所带的数据
books.name(1)%输出name和第一个数据
books.name{1}%仅输出第一个数据
4.0 矩阵及其运算
4.1 简单矩阵构造
矩阵必须用构造符号[ ]
>> a=[1,2,3,4]
a =
1 2 3 4
多行矩阵之间必须用分号隔开
>> A=[1,2,3,4;5,6,7,8;9,10,11,12]
A =
1 2 3 4
5 6 7 8
9 10 11 12
4.2 特殊矩阵构造
函数名 | 函数用途 | 调用格式 |
---|---|---|
ones | 产生矩阵元素全为1的矩阵 | A=ones(m,n) |
zeros | 产生矩阵元素全为0的矩阵 | A=zeros(m,n) |
eye | 产生单位矩阵 | A=eye(m,n) |
diag | 向量转化为对角阵,或者得到矩阵的对角元素 | X=diag(v,k) v=diag(X) |
rand | 产生0~1均匀分布的随机数 | Y=rand(m,n) |
4.3 向量的构造
- 可以用来构造步长为1的向量
>>A=1:5
A= 1 2 3 4 5
- 也可以创造任意步长的向量
>>y=0:pi/4:pi
y= 0 0.7854 1.5708 2.3562 3.1416
4.4 矩阵大小的改变
-
矩阵的合并
C=[A B]%前提是A,B行数相同 C=[A; B]%前提是A,B列数相同
-
删除矩阵的操作
%删除第二列 A(:,2) = [ ]
-
矩阵下标引用
%提取矩阵中的元素 x1=X(:,1)%获取第1列中的所有元素 x2=X(2,:)%获取第2行中的所有元素 x3=X(1:4,3)%获取第三列中的1到4行的元素 x4=X(2:4,1:3)%获取第2到第4行,1到第3列中的元素
4.5 矩阵运算
主要包含下列计算方式
-
矩阵的加减运算
A=[1 2 3;4 5 6;7 8 0]; B=[1 3 5;2 4 6;3 6 9]; D=A+B C=A-B
-
数与矩阵相乘
A=[1 2 3;4 5 6;7 8 0]; B=A*2
-
矩阵与矩阵相乘
A=[1 2 3;4 5 6;7 8 0]; B=[1 3 5;2 4 6;3 6 9]; C=A*B
-
矩阵的转置
A=[1 2 3;4 5 6;7 8 0]; B=A'
-
矩阵除法
矩阵的除法分为左除和右除
A=[1 2 3;4 5 6;7 8 0]; B=[1 3 5;2 4 6;3 6 9]; C=A\B%左除 D=A/B%右除
-
矩阵乘方
%前提是A为方阵 A=[1,2,3;4,5,6;7,8,9]; A^2 A^-2
-
矩阵点乘方
a=[1 2 3]; b=[4 5 6]; z=a.^2 z=a.^b
4.6 矩阵结构的改变
%转置
B=A'%把A转置,行变列,列变行
B=transpose(A)%同样也是对矩阵进行转置
%上下翻转
B=flipud(A)%将矩阵A围绕水平轴进行上下翻转操作
%左右翻转
B=fliplr(A)%将矩阵A围绕垂直轴左右翻转
%重排元素
A=[1,1,1;1,1,1;1,1,1]
B=reshape(A,9,1)%将矩阵A由3×3改变为9×1即9行1列
%旋转
B=rot90(A)%将矩阵A进行逆时针旋转90度
B=rot90(A,2)%将矩阵A逆时针旋转90度2次
%逆矩阵
B=inv(A)%求A的逆矩阵,前提是A为方阵
%生成0矩阵
B=zeros(10,5,3)%创建一个10行5列3维的全0矩阵
%%因为是3维矩阵,所以最终会生成三个矩阵
%生成1矩阵
B=ones(1,2)%创建1行2列的全1矩阵
%生成单位矩阵
B=eye(1,2)%创建单位矩阵,即对角线上为1,其余为0的矩阵
4.7 矩阵元素的改变
a=-3.2
floor(a)%按照-∞方向取整
ceil(a)%按照+∞方向取整
round(a)%四舍五入取整
fix(a)%离0近的方向取整
4.8 数据的保存与获取
%把matlab工作空间中一些有用的数据长久保存下来的方法是生成mat数据文件。
save%将工作空间中所有变量保存matlab.mat中
save data%将工作空间中所有变量保存为data.mat
save data a b %将工作空间中变量a和b保存为data.mat
save data a b -append%将变量a和b添加到data.mat
save data a b -ascii%将变量a和b保存为data.mat的8位ascii文件
save data a b –ascii-double%将变量a和b保存为data.mat的16位ascii文件
%用load指令调用已生成的mat文件。
load ——
load data ——
load data a b ——
load data a b -ascii
5.0 字符串处理
5.1 字符串创建
%用一对单引号表示字符串
str=‘I am a good man’;
str1=(‘[86 88]’);
%用函数合并字符串
a='My name is '
b='Li Lei'
c=strcat(a,b)%stract函数的作用:将两个char类型连接
d=[a,b]%相当于构建字符串数组
%字符串数组构造
str=['second';'string']
%函数char构造字符串数组,如果字符串具有不同的长度,自动用空格补足
c=char('first','second','third')
5.2 字符串比较
strcmp%比较两个字符串是否相等
strcmpi%与上相同,忽略大小写
strncmp%比较两个字符串前n个字符是否相等
strncmpi%与上同,忽略大小写
str1='blink';
str2='bliss';
c=strcmp(str1,str2)
d=strncmp(str1,str2,3)%比较这两个字符串的前三个字符是否相等
%最终输出的是0或者1,相同为1,不同为0
5.3 字符串查找和替换
strrep(str1,str2,str3)%把str1中的str2换成str3
strfind(str,pattern)%查找str中pattern出现位置
s='This is a good example'
str=strrep(s,'good','great')
index=strfind(s,'a')
%输出结果如下
s =
'This is a good example'
str =
'This is a great example'
index =
9 18
%可见index最终输出了两个数值,表示'a'分别在str字符串的第9和第18个字符中出现过
5.4 字符串和数值的转换
int2str%整数转换为字符串
num2str%数值类型转换为字符串
str2num%字符串转换为数值类型
bin2dec%二进制字符串转为十进制整数
6.0 程序结构
6.1 顺序结构
系统按照程序的实际位置逐一的运行
A=[1,2,3]
B=[4,5,6]
C=A+B
6.2 循环结构
6.3 分支结构
7.0 基本绘图操作
7.1 二维平面绘图
%1.二维平面绘图
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]) % x坐标值的范围
%
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'); %共用一个x的坐标系,在y上有不同的取值
%设置相应的标签
set(get(AX(1),'Ylabel'),'String','Slow Decay')
set(get(AX(2),'Ylabel'),'String','Fast Decay')
xlabel('Time(\musec)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')
7.2 三维立体绘图
%2.三维立体绘图
t = 0: pi/50: 10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
%hold on
%hold off %不保留当前操作
grid on %把图片绘制出来,在图片中加一些网格线
axis square %使整个图(连同坐标系)呈方体
其他
1. :的用法
在Matlab中,:表示“所有”的意思
%%第1种用法
x(i,j,k)%含义是第k层矩阵的第i行j列元素
x(:,:,k)%表示第k层矩阵中的所有元素,即表示第k层矩阵
%创建多维数组
A = [1 2 3; 4 5 6; 7 8 9]
A(:,:,2) = [10 11 12; 13 14 15; 16 17 18]
%则可以得到
A =
A(:,:,1) =
1 2 3
4 5 6
7 8 9
A(:,:,2) =
10 11 12
13 14 15
16 17 18
A(:,1,1)=
ans =
1
4
7
%第2种用法
y=x(1,:)%相当于把x这个矩阵的第一行所有列赋给y
%第3种用法
a(:,1:3)=[]%表示将数组a的第1列到第3列删除
2.linspace函数
linspace函数的作用是生成线性距离向量
y = linspace(x1,x2)%y=linspace(x1,x2) 返回包含x1和x2之间的100个等间距点的行向量。
y = linspace(x1,x2,n)%y=linspace(x1,x2,n) 生成n个点。这些点的间距为(x2-x1)/(n-1)。