matlab donetbuilder 32位_Matlab使用技巧总结1

抽空看了Matlab官方文档,把Matlab语言系统梳理了一遍。先上资源:

【1】基础操作

1.1 命令行操作

  • whos:查看存在的变量名和形态

  • clear all / clear 变量名:清除全部/某变量

  • clc:清除命令窗口内容

  • close all:关闭画图窗口

1.2 输出精度:format +变量精度

  • format + long/short:64位/32位

  • format + Rat:分数

  • format + longE/shortE:64/32位科学计数法

1.3 vector/matrix

matlab的默认一维数据是列vector。所以对matrix的命令,返回值都和列相关。

A = [1 3; ...
4 5; ...
9 8]
max(A):9 8 %查找列vector的最大值
sort(A): [] %每列vector升序排列
length(A): 2 %有几列vector

1.4 matrix基本运算

  • matrix对应元素加减乘除:+、-、 .* 、./

  • 单位阵:eye(n)

  • 零阵:zeros(n1,n2)

  • 全1阵:ones(m1, m2)

1.5 调试

  • 打印变量:disp()

  • “%%”代码分块,【run section】可以只运行某一个代码块。1ba88bccb2cee8083747bc43dac7f370.png

【2】总结的技巧

2.1 pre-allocation提高运算速度

虽然matlab是动态语言,但是【预先分配变量】可以明显提高运算速度。

例如:section1中预定义了A = zeros() ,比 section2 的运算速度快了近40倍。

5a7ed638023d6feb6cd94e7866c0adc3.png

2.2 struct+cell 模态

【struct】

struct('fieldname', 'value'),和数据表很像,常用操作:

  • fieldnames (struct) 查找字段名

  • rmfield(struct, fieldname),删除字段名

  • isfield(struct, fieldname) 查找字段

【cell】

Acell{1,1} = [1 2 3], Acell{1,2} = 'abc'.
Acell{1,3} = 1:1:10, Acell{1,4} = [].

cell本质是一个pointer, 因此可以存放不同形态的变量,可以参考C语言中的指针。

【struct + cell】

自己做实验采集的数据会面临数据按结构存储的问题。为了解决【每个subject实验中数据量不同,且每个实验样本数据的长度不一】等问题,我使用了struct嵌套cell的好办法:

Subject(1).Name = 'Liming';
Subject(1).Age = 26;
Subject(1).Data{1,1} = {};
Subject(1).Data{1,10} = {}; % 10 trials

Subject(2).Name = 'Jenny';
Subject(2).Age = 30;
Subject(2).Data{1,1} = {};
Subject(2).Data{1,6} = {};

3056493980e109d70a533ff31aee281c.png

2.3 数据IO

自己平时和. csv文件交互较多,matlab常用的csvread()只能读取number,无法读取header。为了保证读写的完整性,常用如下方法:

【Input】

importdata( 'file.csv' )

b78c02956d1ba8412fb94c969bdb75b2.png

data存数据,textdata存header。

【Output】

利用底层的 fopen, fprintf, fclose组合进行操作。

x = 0:pi/10:pi;
y = sin(x);
fid = fopen('TestSin.csv','w');
fprintf(fid,['%s',',','%s','\n'],'X','Y') % header
for i = 1:11
fprintf(fid, ['%f',',','%f','\n'], x(i),y(i)); % number
end
fclose(fid);

2.4 cat() 数据拼接87608bf2ce4ced0d9f0ac5c866c556ea.png【3】画图

3.1 plot

感叹Matlab画图的功能是真的强大!虽然看起来比较繁琐,但是捋清了显示一幅图像的过程,画图其实也是模块化步骤。

一张图被分为:Figure、Line、Decoration三个部分。f27e4304e01c31ccc8f141c3585d585a.png

Figure Object包括:图片大小、位置等

Line Object包括:线条颜色、粗细等

Decoration Object包括:标题、标注等

gcf和gca句柄,利用get()函数查看可编辑参数;set()函数修改每个参数。

【Figure Object】

f = figure
h = plot([1,2,3]);
get(gcf); % figure object
h; % line object
get(gca) % decoration object

get(gcf)显示了figure object的所有参数:

61090d2c394db93c01d6c6b5a94f9161.png

set(gcf, 'para','state')可以调整任意参数。

【Line Object】

af89d1920b909a5bebe8451b4a9960ba.png

【Decoration Object】

15dcf70a4ca5d10e0fc552a3cfb21e0a.png

3.2 Colormap

colormap()返回的是color矩阵,例如:a = colormap(hot)

cc48bcc4ab728f825f265731450093f8.png

hot/cool/gray/hsv是不同的色盘,选择不同的色盘可以返回对应的颜色矩阵。

35a2b44bf5b904ef8473ed783e546027.png

3.3 图片输出

print(figure(1),'figure_name','-dpng','-r900')。其中:-dpng和-r900是格式和分辨率。

其他图片格式如下:

cd0902245d18802161393d2707864f47.png

到这里就结束了。

07173bd4c9fdd7864e0db875c6cbe216.png

    关注我们,有更多免费软件和实用技巧等着你!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值