matlab中集合运算函数——解析

摘要:
tic[a1b1c1]=唯一(A,tict=max(max(A));B=零(大小(A,2)B=B*(t+1)+A(:end[ab2c2]=唯一(B);B=randperm(5000000;%%第一种方法ticC=并集(A;

1. unique函数

 对于unique(A,'rows')而言, 速度较慢, 例: 

A = randi(10,1000,100000); %生成10以下数字的1000×100000的矩阵

 第一种方式: 

tic
[a1 b1 c1] = unique(A,'rows');
toc

       运行时间  t=2.656930s;

 第二种方式: 

tic
t = max(max(A));
B = zeros(size(A,1),1);
for i = 1:size(A,2)
    B = B*(t+1) + A(:,i);
end
[a2 b2 c2] = unique(B);
toc

       运行时间  t=0.369617s;

 运行时间上第二种方法比第一种减少了10倍, 且得到了相同的结果. 

2. union函数

  参照程序: 

A = randperm(8000000,7800000);
B = randperm(5000000,4300000);
%% 第一种方法
tic
C = union(A,B);
toc       %运行时间 t=1.360395s
%% 第二种方法
tic
b = zeros(1,max([A,B]));
b([A B]) = 1;
D = find(b);
toc       %运行时间 t=0.558845s

  可知第二种方式比使用函数运行时间更短. 

3. setdiff函数

  参照程序: 

A = randperm(8000000,7800000);
B = randperm(5000000,4300000);
%% 第一种方法
tic
C = setdiff(A,B);  %意义为 A-B
toc     %运行时间 t = 3.845448s
%% 第二种方法
tic
a = max(A);
b = zeros(1,a);
b(A) = 1;
b(B(find(B<(a+1)))) = 0;
D = find(b);
toc     %运行时间 t = 0.571202s

 可知第二种方式比使用函数运行时间更短

综上所述, Matlab中有关集合运算的函数并不一定运行快, 比如unique、union、setdiff、setxor、intersect、ismember等函数, 上述函数皆可以仿照本文方法重新编写加快程序运行速度. 并且, 程序短≠运行快

免责声明:文章转载自《matlab中集合运算函数——解析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇React中的虚拟DOM[学习笔记]万能欧几里得下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SpringMVC拦截器详解

拦截器是每个Web框架必备的功能,也是个老生常谈的主题了。 本文将分析SpringMVC的拦截器功能是如何设计的,让读者了解该功能设计的原理。 重要接口及类介绍1. HandlerExecutionChain类   由HandlerMethod和Interceptor集合组成的类,会被HandlerMapping接口的getHandler方法获取。 2....

在PC上调试微信手机页面的三种方法

场景 假设一个手机页面,开发者对其做了限制,导致只能在微信客户端中打开。而众所周知手机上非常不利于调试页面,所以需要能在电脑上打开并进行调试。这里针对常见的三种页面做一下分析,一一绕过其限制,(当然不要拿去干坏事) 工具准备 ‍‍‍‍1、方便调试的浏览器。个人喜欢Chrome,本文基于Chrome 43.0.2357.130 (正式版本) m (32 位)...

简便的将DataSet导入到数据库中

      有时候我们需要经常的将数据集(DataSet)导入到数据库中,可是怎么办呢? 有人就说了,利用Sql语句马上就可以搞定了,对,sql是可以搞定,但是sql的拼接不可以有差错啊,利用SqlParameter可以减少类型的烦恼,可是如果是很多列,那还不累死你。 1、将DataSet导入Access中(OleDbDataAdapter.Update方...

Jmeter+ant+Jenkins实现接口自动化平台及报告发送

项目中实现了比较方便的自动化体系,一直没时间总结一下,现抽空整理一番,废话不多说  内容如下: 一、环境准备  jmeter : 编写接口脚本,实现接口测试 ant  :静默执行jmeter脚本,并生成测试报告 jenkins  :集成接口测试到项目流程,实现定时运行及接口测试报告邮件发送 ------以上准备工作可以百度自行安装,工具安装环境无依赖,把环...

C#中析构函数,命名空间及字符串的运用(Ninth day)

又到了总结知识的时间了,今天在云和学院学习了析构函数,命名空间及字符串的处理,现在就为大家总结下来。 理论: 析构函数 不能在结构中定义析构函数。只能对类使用析构函数。 一个类只能有一个析构函数。 无法继承或重载析构函数。 无法调用析构函数。它们是被自动调用的。 析构函数既没有修饰符,也没有参数。 命名空间 •namespace(命名空间),用于解决类重...

公用技术——数据格式——JSON——Jackson类库——序列化——属性,键映射关系

  通常情况下,对象的属性与JSON键的关系是一对一,键的顺序是根据属性的顺序,键的名称是与属性的名称保持一致的。 Jackson有很多注解可以修改以上三种关系。首先从属性名称与键名称开始。 1、名称 1.1     @JsonProperty 在属性上添加@JsonProperty注解,给value赋值可以修改对应的键名称,例如User对象存在name属...