Matlab 效率优化问题

一直以为使用matlab自带的函数要比自己编写的函数更加高效,毕竟感觉一个团队研发出来的东西应该要比我这种可以仅仅算是使用了一年matlab而且没有其他编程语言背景的菜鸟要高大上很多,但是在多次的项目优化尝试后发现,有些时候代码量少未必就是写得好、效率高,matlab自带的简便函数有些时候就未必有自己编写的函数速度快,以下列举一些简单的自己常会用到的语句可以优化的地方:
1.合并和查找:众所周知,提前预设一个变量的范围往往要比我们后期改变该变量大小会省很多时间,这里就不加以阐述。一般我们想要合并两个同类型矩阵的数据时选择行合并和列合并都直接用[a;b] ,或若是我们需要从一个矩阵中找到我们想要的部分B=A(A(:,2)==code,:);当矩阵过大或是运行次数过多时,以上两种做法会非常耗时,建议采用定位法,如合并的时候可用
c(1:length(a),:)=a;  c(length(a)+1:length(b)+length(a),:)=b; 查找的时候可以事先确定好位置序号:
[name,xuhao,~]=unique(A(:,2));
xuhao(length(name)+1)=size(A,1)+1;% 为最后一个代码找到终点值
pos=find(name==code); % 只需要从小集合name中查找所要找的代码的位置;
B=A(xuhao(pos):xuhao(pos+1)-1,:);%定位提取


2.ismember、intersect等集合函数功能非常强大, 用着也很方便,但是若是在我们的程序在需要多次遍历使用,在重复次数多的情况下非常耗时间,经过尝试发现他们其实可以被all、find、any
等函数替代&#
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值