Writing Fast Matlab code 3-5
2015-10-07 20:28
357 查看
3 数组预分配
预先指定数组大小能加快运算;
如果最后数组大小可能是变动的可以采用以下方法:
1.先分配一个较大的大小
2.利用count确定最后的大小
![](http://img.blog.csdn.net/20151005194117985)
![](http://img.blog.csdn.net/20151005194240080)
最后一个是accumarray:Construct array with accumulation
看完matlab官方注解也没太懂,找一个链接一起学习一下
http://ncforest.blog.163.com/blog/static/295626642007111911364821/
5.2 向量化逻辑
e.g.1 向量均一化
比较下其他的方法:
好像还是方法1要快一点点;
但如果循环用norm的话就不止慢一点点了。。。
e.g.2 去掉元素
比如你想去除矩阵里面太小(NAN)或者太大(INF)的元素可以用以下命令:
e.g.3 分段函数
![](http://img.blog.csdn.net/20151007201048213)
sinc(x) = (sin(x) + x == 0) ./ (x + x == 0)
e.g.4 画网格图
![](http://img.blog.csdn.net/20151007201619209)
生成了 5 * 3 的点阵后可以用于作图
![](http://img.blog.csdn.net/20151007201925812)
e.g.5 多项式插值
这部分可以略过。。算多项式插值还是用polyfit吧。。
预先指定数组大小能加快运算;
如果最后数组大小可能是变动的可以采用以下方法:
1.先分配一个较大的大小
2.利用count确定最后的大小
最后一个是accumarray:Construct array with accumulation
看完matlab官方注解也没太懂,找一个链接一起学习一下
http://ncforest.blog.163.com/blog/static/295626642007111911364821/
5.2 向量化逻辑
e.g.1 向量均一化
a = a ./ (ones(50,1)*sqrt(sum(a .* a)));
比较下其他的方法:
tic; aa1 = a ./ (ones(50,1)*sqrt(sum(a .* a))); toc tic; aa2 = a ./ (ones(50,1)*sqrt((dot(a,a)))); toc
好像还是方法1要快一点点;
但如果循环用norm的话就不止慢一点点了。。。
e.g.2 去掉元素
比如你想去除矩阵里面太小(NAN)或者太大(INF)的元素可以用以下命令:
x(isnan(x) | isinf(x) ) = []; %去除坏元素 %保留好元素就是取非运算哈,一个道理
e.g.3 分段函数
sinc(x) = (sin(x) + x == 0) ./ (x + x == 0)
e.g.4 画网格图
生成了 5 * 3 的点阵后可以用于作图
e.g.5 多项式插值
这部分可以略过。。算多项式插值还是用polyfit吧。。
相关文章推荐
- 用MATLAB填補照片中空白的區域
- 11.14 MATLAB编译错误中英对照29
- 11.13 matlab编译生成执行文件注意的若干问题
- Mac OS X10.10下Matlab 2014b安装libsvm-3.20
- MATLAB图像操作(变换,读写,显示,增强)
- matlab中的文本处理
- matlab中gscale函数——M文件
- Matlab机器人工具箱
- Matlab-GUI 这个例子包含了几乎所有的matlab按钮
- Matlab GUI设计——文件读取和保存uigetfile,uiputfile
- 汉诺塔matlab实现
- MATLAB - 为什么imshow(g,[])可以正常显示,而imshow(g)却显示空白图像?
- matlab边缘检测算法汇总2
- matlab 边缘检测汇总1
- Notepad++
- 11.12 原创的matlab注释的方法
- Matlab基础之plot、plotyy的格式设置(坐标,刻度,坐标值,不均匀的坐标轴显示)
- Matlab Error (Matrix dimensions must agree)
- matlab中的subplot函数
- Matlab-vision包学习-Tracking and Motion Estimation-创建Kalman滤波器