Matlab代码优化--向量化】的更多相关文章

前段时间改写老师的一个计算纳米细颗粒物的C语言程序,不过运行的效率实在是太低了,工作站跑都很吃劲,晚上看了冈萨雷斯的数字图像处理意外发现了问题所在.在将C语言的程序改写成Matlab程序的时候我还是保持的写C语言的想法,上来全是for循环而忽视了Matlab的矩阵操作. 这里举的例子是冈萨雷斯的书里面的一个例子,比较的是f(x,y)=A sin(u0x+v0y),用for循环和向量化代码实现,具体如下: function [rt,f,g] = twodsin(A,u0,v0,M,N) tic %…
一. 遵守Performance Acceleration的规则 关于什么是“Performance Acceleration”请参阅matlab的帮助文件.1.只有使用以下数据类型,matlab才会对其加速:logical,char,int8,uint8,int16,uint16,int32,uint32,double而语句中如果使用了非以上的数据类型则不会加速,如numeric,cell,structure,single,function handle,java classes,user c…
MATLAB是一个很好用的工具.利用MATLAB脚本进行科学计算也特别方便快捷.但是代码存在较多循环时,MATLAB运行速度极慢.如果不想放弃MATLAB中大量方便使用的库,又希望代码能迅速快捷的运行,可以考虑将循环较多的功能采用C编写,MATLAB调用.本文将概述这一过程.虽然本文以LDPC译码算法为例,但不懂该算法不影响本文阅读. 1. 起因 最开始用MATLAB写的LDPC译码算法中,其中一个版本是这里,里面有三重循环,运行速度极慢.后来考虑了MATLAB的向量化操作,通过算法的合理划分以…
最近看到一篇文章讲IMAGE DECOMPOSITION,里面提到了将图像分为Texture layer和Structure layer,测试了很多方法,对于那些具有非常强烈纹理的图像,总觉得用TV去燥的方法分离的结果都比其他的方法都要好(比如导向.双边),比如下图: 再比如:   可见TV可以把纹理很好的提取出来. 现在应该能找到很多的TV代码,比如IPOL上就有,详见http://www.ipol.im/pub/art/2013/61/. 我在其他地方也见过一些,比如这里: http://y…
0 前言 近些年来,所谓的人工智能也就是AI. 在媒体的炒作下,变得神乎其神,但实际上,类似于图片识别的AI,其原理只不过是数学的应用. 线性代数,概率论,微积分(著名的反向传播算法). 大家觉得这些东西离自己很远,没错! 这东西底层实在是很难,斯坦福公开课网站上(Coursera), 有吴恩达教授的机器学习课程,需要利用Matlab用向量化的编程方式完成线性回归,逻辑回归,甚至是神经网络,以及反向传播代码.这些内容无论在任何方面都是艰涩的难以理解的. 而这只能算是人工智能机器学习的入门课程.本…
匿名函数: 匿名函数是不存储在程序文件中.但与数据类型是 function_handle 的变量相关的函数.匿名函数可以接受输入并返回输出,就像标准函数一样.但是,它们可能只包含一个可执行语句. 例如,创建用于计算平方数的匿名函数的句柄: sqr = @(x) x.^2; 向量化和预分配(提高程序执行速度): 向量化:要使得matlab更高速工作,把.m文件算法向量化,其他语言使用for循环,Matlab可用向量或矩阵运算. 例:原算法: x=0.01; : y(k)=log10(x); x=x…
学习笔记 V1.0 2015/4/17 如何加速MATLAB代码运行 概述 本文源于LDPCC的MATLAB代码,即<CCSDS标准的LDPC编译码仿真>.由于代码的问题,在信息位长度很长(大于10000)情况下,代码无法正常运行或执行速度很慢.本文将叙述代码修改过程中的一系列手段,然对其加速原理不做探究 修订历史 以下表格展示了本文档的修订过程 日期 版本号 修订内容 2015/04/17 V1.0 初始版本 简介 本程序基于MATLAB 2014a 编写,本文档中提到的"MATL…
Matlab的含义是矩阵实验室,其特征之一就是数据的向量化操作,借此提升软件运行效率.那么,必然会涉及数据元素的访问.Matlab主要支持下面一些形式的访问: (1)array-inde: A(i) (2)cell-index: C{i} (3)struct field: S.fieldname 不同的访问方式,效率差别很大,我们以单个元素或者域的访问为例,探讨不同的数据结构的访问时间. 一百万次访问的平均时间对比: (1)array-index: 0.002675s (2)cell-index…
matlab自带有histeq函数对图像进行直方图均衡 自己写了一个,改成向量化形式,效率提高了一点,但是比自带的还是差很多,差不多9倍 function D = my_histeq(I) [m,n] = size(I); S = zeros(,,'double'); % 得到0-各个灰阶的计数 i = :m;j = :n; S(I(i,j)+) = S(I(i,j)+) + ; % 得到各灰度阶的概率 S = S./(m*n); % 得到概率累计分布函数 P = zeros(,,'double…
原文地址:http://developer.51cto.com/art/201104/255128_all.htm MATLAB语言是一种被称为是"演算纸"式的语言,因此追求的是方便性.灵活性以及交互性.在快速性上要比C语言这种性能强劲著称的稍逊一筹.然而,通过一些手段,我们也能让MATLAB语言快起来,甚至和C差不多了! MATLAB语言是一种被称为是"演算纸"式的语言,因此追求的是方便性.灵活性以及交互性.在快速性上要比C语言这种性能强劲著称的稍逊一筹.然而,通…