matlab实战中一些重要的函数总结

本文是对MATLAB实际应用中常见函数的总结,包括路径处理、查找排序、随机过程、维度转换、绘图、数据转换、向量化编程以及文档读写等方面。介绍了如mfilename、fileparts、fullfile、genpath、addpath、exist等路径处理函数,sort、find、where等查找排序函数,以及randi、random等随机数生成函数。此外,还探讨了如何在MATLAB中避免使用for循环实现向量化编程,以及txt、图片、xml文件的读写方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这段时间看了一些大型的matlab工程文件(如:faster r-cnn),对于工程中经常要用到的一些函数进行一个总结。
1、路径问题。
这主要涵括文件路径的包含和组合。

curdir = fileparts(mfilename('fullpath'));
addpath(genpath(fullfile(curdir, 'utils')));
mkdir_if_missing(fullfile(curdir, 'utils'));
caffe_path = fullfile(curdir, 'external', 'caffe', 'matlab');
if exist(caffe_path, 'dir') == 0
   error('matcaffe is missing from external/caffe/matlab; See README.md');
end

我们经常需要引用不同文件夹下的文件或是函数。
mfilename 表示正在运行的函数的路径
fileparts 则返回文件上层的文件夹路径
fullfile 则返回组合文件的全路径
genpath 递归的产生该文件夹下的所有文件的路径
addpath 路径加入到函数或文件搜索的范围内
exist 查看路径是否存在
mkdir_if_missing 如果不存在就创建对应的文件夹

dirpath = '/home/Deeplearning';
filepath = [dirpath, '/%s.txt'];
for i=1:10
    filepath_real = sprintf(filepath, num2str(i));
end

这时路径组合中经常出现的情况
用[]拼接通用路径,具体情况时再加入需要改动的部分,需改动的部分在拼接通用路径时预留
2、查找和排序

[B,I] = sort(A,mode,dim)

A为输入矩阵或向量,mode为排序的模式,升序还是降序,dim表示按第几维进行排序;B为排序后的矩阵或向量,I为排序后的各元素的序号。

X = [3 2 0; -5 0 7; 0 0 1]
[row,col,v] = find(X>1)

X>1为条件,即矩阵X中元素大小比1大的元素,row,col, v分别为返回的元素的位置横、纵坐标、元素本身。
3、随机过程与函数
randi ,random等
4、维度转换

A = [1 2; 3 4]; permute(A,[2 1])
ans =
     1     3
     2     4

squeeze移除掉多余的某一纬度

Create a 2-by-1-by-3 array and remove the singleton column dimension to form a 2-by-3 matrix.
y = rand(2,1,3)
z = squeeze(y)
y(:,:,1) =
    0.8147
    0.9058
y(:,:,2) =
    0.1270
    0.9134
y(:,:,3) =

    0.6324
    0.0975
z =

    0.8147    0.1270    0.6324
    0.9058    0.9134    0.0975

5、画图
plot , subplot, figure, meshgrid等
对于如何在一幅图片中的指定位置加入文字和标注可参考我的上一篇博文http://blog.youkuaiyun.com/sunnyxiaohu/article/details/51150430
中 function showboxes(im, boxes, legends, color_conf)的解析。
6、数据的转换
round:
Round to nearest decimal or intege
这个在处理数据时很有用
cell2mat:
num2str, str2num
cat(1,some_cell);
unique();
这些函数在进行各种格式之间的数据转换用的很多,可以自行查阅文档。
matlab中经常强调向量化编程,这样能加快运行的速度。那么对于array或者cell,我们怎样尽量的少使用for循环而用向量化编程呢?

A = randi(10,4,2)%假设你有
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值