Matlab基础

Matlab

1.0 变量命名

1.1 注释

  1. %%独占一行的注释
  2. %普通注释

1.2 清空环境变量及命令

  1. clear all 清楚workspace中的所有变量
  2. 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. 可以用来构造步长为1的向量
>>A=1:5
A= 1 2 3 4 5
  1. 也可以创造任意步长的向量
>>y=0:pi/4:pi
y= 0  0.7854  1.5708  2.3562  3.1416

4.4 矩阵大小的改变

  1. 矩阵的合并
    C=[A B]%前提是A,B行数相同
    
    C=[A; B]%前提是A,B列数相同
    
  2. 删除矩阵的操作
    %删除第二列
    A(:,2) = [ ]
    
  3. 矩阵下标引用
    %提取矩阵中的元素
    
      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 矩阵运算

主要包含下列计算方式

  1. 矩阵的加减运算

    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
    
  2. 数与矩阵相乘

    A=[1 2 3;4 5 6;7 8 0];
    B=A*2
    
  3. 矩阵与矩阵相乘

    A=[1 2 3;4 5 6;7 8 0];
    B=[1 3 5;2 4 6;3 6 9];
    C=A*B
    
  4. 矩阵的转置

    A=[1 2 3;4 5 6;7 8 0];
    B=A'
    
  5. 矩阵除法

    矩阵的除法分为左除和右除

    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%右除
    
  6. 矩阵乘方

    %前提是A为方阵
    A=[1,2,3;4,5,6;7,8,9];
    A^2
    A^-2
    
  7. 矩阵点乘方

    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)。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值