Matlab学习笔记(基础认识)

学习来源:MATLAB教程-台大郭彦甫 (02-06集)

https://www.w3cschool.cn/matlab/matlab-5use28gb.html

 

1 数据都以矩阵为基本类型。标量是1*1矩阵,向量是一维矩阵(亦称一维数组),矩阵是二维数组,还有多维数组(三维+)

 

2 与其他编程不同,万物始于1而非0。如矩阵第1行就是首行。

 

3 函数function定义,调用时用的函数名应该是文件名而不是定义的函数名;与script类似,都是.m的文件类型

3.1 注意有个小技巧

我们知道.*是基于element操作的,这里为何要采用这种方式而不是单纯的*呢?原因在于通过这个操作符,我们可以额外支持例如向量中的元素操作,而不是把其作为向量积操作。

例如:

3.2 function handles:定义一个简介的function语句,可在脚本中调用

f=@(x) 2*x; 其中f是函数名,x是输入参数,2*x是函数体。在后面的调用中,只需f(1),即可输出2。

3.1 无参函数 

function f

xxx

end

3.2 有参函数

function [return值] f(x1,x2,...)

xxx

end

 

4 基础绘图

4.1 两种方式(注意:y与x的关系已事先定义)

·plot(x,y);

·plot(y); %x的范围由y定,x=[1,...,n],n是y的长度,如下图例子

4.2 调整样式

1)plot(x,y,'str'); %str由表示函数曲线的样式对应的字符拼在一起的字符串

4.3 其他操作

1)hold on 使多个曲线显示在一张图中

2)legend()  对各曲线的命名显示

3)title(), xlabel(), ylabel(), zlabel()

4)text(), annotation() %前者可用于在图中显示曲线的名字(注意,text中公式用的是latex格式),后者也用于将其用箭头指向某个曲线

5)图形对象 属性修改

对象:图,轴,线

修改对象属性:1.获得对象handle;2.fetch或modify对象属性

1.获得对象handle:

2.fetch或modify对象属性:

get(),se()

如:

获得属性值:

x = linspace(0, 2*pi, 1000);
y = sin(x); h = plot(x,y);
get(h); get(gca);

设置属性值。例如坐标轴数字大小,范围

set(gca, 'XLim', [0, 2*pi]);

4.4 图片显示样式、位置、大小等调整

1)显示多个窗口(图)

注意,此时再获得gcf时获得的是第二张图,而不是两张图(默认获取最后一张图)

2)位置大小

3)一个窗口包含多个小图

subplot(m, n,1); %分为m*n个小图,并且此时的位置是1

4)调整Grid, Box, and Axis的显示与否或形状

4.5 存图到文件

也可以使用print (To control size and resolution)

 

4(2) 进阶绘图

1)特殊figure

(注意x,y轴的范围取值)

(注意AX(1/2)和set/get的使用)

(hist(·,·)第一个参数是输入数据集,第二个数据表示细分成多少柱子)

(Bar charts 条形图: 图2第一堆表示x vector,第二堆表示1:5; bar3: 3D条形图)

(堆叠:关键词'stacked';横向:barh(·))

(饼状图:解释见下图)

(极坐标图:POLAR(THETA, RHO) 当中,THETA是用弧度制表示的角度,RHO是相应的半径。)

(阶梯图和火柴梗图;注意:linspace 不是 line space 的缩写,是linearly space 线性空间的缩写,其最后一个参数是取样个数)

(这是练习题,右边为我的解答,因为5HZ=0.5s,所以应该选0~10中的50个x)

(统计相关的,用到的时候再说吧)

更多图类型可见官网:

高阶绘图操作:

1)fill() :画图并填充

2)颜色空间

3)imagesc() 可视化数据为一张图

imagesc(A) 将矩阵A中的元素数值按大小转化为不同颜色,并在坐标轴对应位置处以这种颜色染色

加上colorbar;

colormap(Name); %修改色系

自己定制colormap

例如变成如下的绿色系,用右图的方法

4)3D绘图

A. plot3(): 例如在三维平面画三个3D曲线

B. Surface Plots

使用meshgrid构造X,Y矩阵,给出x,y的取值情况

C. contour() 3D投影到2D 格式:contour(X,Y,Z);

不同contour() 样式:

meshc() and surfc():mesh/surf与contour结合

D.View Angle

view(-45,20); %指定view位置

E.Light

F. patch() 画多边形

 

 

5 要运行一个script,得先把“当前文件夹”转为该文件所在的文件夹,使用chdir dir_name

 

6 数据类型 char, numeric (default: double), logical, cell({}), structure

 

7 eps (stands for a very little number): 2.2204e-016

 

8 加‘;’表示不显示。如a=1按运行就会输出a=1; 若a=1;则不会输出

 

9 矩阵索引 

9.1 如取“21”,法一:A(1,2); (即有逗号在中间)   法二:A(4)(即没有逗号)

9.2 如要删掉矩阵A的第三行:A(3,:)=[];

9.3 矩阵(向量)操作符

A*B 正常乘; A.*B 同等位置上元素分别乘,并放回原来的位置

A/B约=A*inv(B); A./B 同等位置上元素分别除,并放回原来的位置

A/a=A./a

A^a=A*...*A; A.^a 对每个元素操作

A‘ 转置操作

max(A),sum(A),mean(A),sort(A),find(A==a).......

9.4 一些特殊的矩阵

如eye(n):n*n的单位矩阵

 

10 script应用技巧

10.1 打开matlab要右键“以管理员身份运行”,不然不能写代码。。

10.2 点开这个,可以寻找忘记的函数名字

10.3 “%%”后面加一段代码,表明是一节,运行时可选“运行节”,即可选择单独运行哪一节;如选“运行”,则执行的是所有的节

10.4 debug模式:给某行加断点,然后run,程序就会在该行先暂停执行,此时我们可以把鼠标移到某变量处查看此时的值。如果要继续的话,可以点“继续”

10.5 “智能缩进”可以自动调整间距,看得更清楚

10.6 pre-allocation预先分配内存,防止重复寻找更大的内存并重新copy原始数据以引起时间资源浪费。如A=zero(200,200);提前建立一个200行200列的空(零)矩阵

10.7 "..."换行号,相当于把第二行直接接在第一行

 

11 特殊数据类型

11.1 字符串 string

替代某个字符的操作,例如 str='abcabc'; 'a'==str   输出 100100; str(str('a'==str))='d'  输出 dbcdbc

11.2 结构 structure (可用于存储异类数据)

1)基本内容: 定义 Structure_name=struct('字段名1','字段名1对应的值','字段名2','字段名2对应的值',...);

字段 field (相当于那个结构的属性);表示同一个结构的不同实体:如 student(1),student(2),...

2)操作

3)nesting 链接操作

structure里面的一项是另一个structure,用指针链接

如A=struct('name', 'cindy','age', 23, 'nest',struct('school','fzu')),字段名用'nest'

11.3 cell array 单元数组 (也可用于存储异类数据)

1)结构与矩阵类似,只是每个单元格中的内容不再要求是同类的;使用{}表示;在matlab中每个单元格用指针指向存储的数据

定义方法有两个:A(1,1)={...} 或 A{1,1}=...;

       

2)操作

num2cell;mat2cell(矩阵分块)图中例子B=mat2cell(A,[10,20,30](行分块),[25,25](列分块));

3)cat() 操作:连接 cat(1/2/3(1对应竖向连接,2对应横向连接,3对应layer连接即下一维),A,B);

4)reshape() 操作:改变array的维度大小,但必须满足r1*c1=r2c2;

 

12 文件存取

1)file system to workspace :load ;  workspace to file system :save

格式:mat/text:load/save;excel:xlsread/xlswrite

2)save/load

save xxx.mat %但是点开文件不是直接可见;save xxx.mat -ascii %点开文件直接可见

load('xxx.mat'); load('xxx.mat','-ascii'); 

2)xlsread/xlswrite

xx=xlsread('xx.xlsx');xx=xlsread('xx.xlsx','B2:D4'(限制读取范围));%但是都是只读取里面的数值,不能读字符串

xlswrite('xxx.xlsx', writed data, sheet number ,location (e.g.,'F2:F4'));

3)读取数值+非数值数据

[Score Header]= xlsread('xx.xlsx');

4)Lower-level file I/O

 

 

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值