自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (3)
  • 收藏
  • 关注

原创 机器学习的正确率、召回率

机器学习的正确率、召回率其实正确率、召回率的公式很简单,但是就是理解起来不是特别的清晰。正确率:召回率:TP和TN都表示检测对了:TP是真阳,检测是阳性,实际上也是阳性。TN是真阴,检测是阴性,实际上也是阴性。FP和FN都表示检测错了:FP是假阳,检测是阳性,但是实际上是阴性。FN是假阴,检测是阴性,但是实际上是阳性。换句话说就是:正确率:你找对的例子数/你找的所有你认为是对的例子数(你有可能把一些错的例子当对的)召回率:你找对的例子数/你找的所有真实是对.

2021-05-06 16:26:00 1075

原创 并行排序

奇偶排序双调排序基数排序 使用compact算法

2020-07-01 19:03:33 750

原创 并行scan算法 Hillis Steels 和 Blelloch

Hillis/Steels算法Blelloch算法:相互比较:

2020-07-01 16:41:08 1146

原创 STL array/vector/list简单比较备注

2020-05-09 14:39:13 252

原创 CUDA学习-cdp四叉树实现(预备知识)

一幅如图2(a)所示的二进制图片常常会用一个二进制矩阵来表示。所谓二进制矩阵是指矩阵中的每一个数不是0就是1。图2(b)展示图2(a)用二进制矩阵表示的情况。图2:(a)二进制图片(b)图片的矩阵表示(c)四分树划分(d)四分树表示为了保存图2(b)这样的矩阵,经常使用四分树来完成。对于一个N * N的矩阵,N <= 512且N = 2^i(i为正整数),如果这个矩阵中的数不全一...

2020-02-16 17:09:32 518

原创 2D凸包算法(六):Incremental Method

Incremental Method 图示Incremental Method 实时的保持一个凸包。每当输入一点,如果点在外面,计算此点与当前凸包的两条切线,去除凸包内的边以连接两条切线为新的边。如果在凸包内部就删除该点。通过遍历凸包边界点。如果点的左右邻点都在改点与请求点连线的同侧,则说明该点就是切点,这个连线就是切线。反之则不是,需要继续查找。时间复杂度为O(N²)每次需要遍历所有...

2020-02-16 15:31:04 400

原创 2D凸包算法(五):Divide and Conquer

Divide and Conquer 图示先对所有的点集进行分割成各个区域,对每个子区域进行凸包算法(如jarvis’s march)求得子凸包。合并凸包,找到两条外公切线即可。从左凸包最右点、右凸包最左点开始,固定左端顺时针转、固定右端逆时针转,轮流前进直到符合凸包要求,且下一步就会破坏其规则为止。同理,可以得到另一半。时间复杂度为 O(NlogN)其中一次排序的时间,通常为 O(N...

2020-02-16 15:19:32 997

原创 2D凸包算法(四):Quick Hull Algorithm

Quick Hull Algorithm 图示先确定两个距离最大的点,连接后构成线。然后寻找离线的最远的点,构成三角形。以此类推,向外快速扩展,直到所有点都在凸包内。时间复杂度: O(N²) ,是最有效率的演算法。(预先剔除凸包内部大部分的点,而且不必预先排序所有点。)具体思想:找出最左点与最右点,连线,所有点分为上半部与下半部。(上半部与下半部分开求解)处理上半部,找出上半凸...

2020-02-16 14:51:00 3787 3

原创 2D凸包算法(三):Andrew's Monotone Chain

Andrew’s Monotone Chain 图示先以 X 座标排序,当 X 座标相同则以 Y 座标排序。从起点开始,按照顺序扫描,找到下半凸包。再从终点开始,按照相反顺序扫描,找到上半凸包。合起来就是完整的凸包。解决了凸包有重叠的点、共线的点、退化成线段和点的问题(在Graham’s Scan可能遇到的问题)。时间复杂度:O(NlogN),其中排序的时间 O(NlogN) ,加上包围...

2020-02-16 13:06:42 1283

原创 2D凸包算法(二):Graham's Scan

Graham’s Scan 图示Graham’s Scan 是先进行排序,然后再进行包围点,中间用到了栈,最为节点存储,这样就不必遍历所有点的方式来寻找最外围的点。时间复杂度:O(NlogN) ,主要取决于排序的时间。(其中寻找起点的时间 O(N) 。加上排序的时间 O(NlogN) 。加上包围的时间 O(N) :总共前进 N 次,最多倒退 N 次,共为 2N 次。)具体思想:排...

2020-02-16 12:44:03 476

原创 2D凸包算法(一):Jarvis' March ( Gift Wrapping Algorithm )

Jarvis’ March 图示先从一个凸包上的顶点开始,顺着外围绕一圈。每当寻找下一个要被包围的点,则遍历平面上所有点,找出最外围的一点来包围。可以利用叉积运算来判断。时间复杂度为 O(NM) , N 为所有点的数目, M 为凸包的顶点数目。具体思想:先确定边界上的点v1和与下一个点v2在点集里去寻找下一个点v3,使得v1 v3 v2满足CCW如果满足,这就说明v3是更外...

2020-02-16 12:25:27 2736 1

原创 【thrust库】thrust::scatter 和 thrust::gather

gather与scatter正好相反:scatter是顺序输入根据map确定撒点输出位置。gather是根据map确定输入元素的位置,输出是按顺序的。如图:具体可以查看https://blog.csdn.net/seamanj/article/details/82976687图片也是从这里获取的。...

2019-11-15 09:35:51 790

原创 CUDA 块间的同步

panda1234lee大神已经讲的很全面,https://blog.csdn.net/panda1234lee/article/details/88294382但是有一些要注意,有些情况可能会出现死锁。由于多个block被分配到不同SM中进行运行,并且在单个SM中只有此block全部运行完之后,才会去调入剩余的block进行计算。注意: 一个SM只有当前block运行完才调新的blo...

2019-10-19 15:52:12 1466 2

原创 const 与 constexpr

const:大致意思是“我永远不改变这个值”,在作为变量传入函数时不用担心在函数内被改变。这里由编译器确认const承诺。constexpr:大致意思时“在编译时求值”,允许将数据放在只读内存内以及提升性能。注意:用constexpr是在编译过程中确定值的,其表达式必须都是constexpr。在用constexpr定义的函数中,函数必须非常简单,且函数中只能有一条计算某个值的retur...

2019-09-25 17:32:37 252

转载 linux gcc 5.4.0安装-问题解决

参照此博客,对gcc进行下载,配置,编译,安装。https://www.cnblogs.com/wkccs/p/5663972.html如果出现问题,可以参照以下博客:https://blog.csdn.net/futangxiang4793/article/details/88660550最后也可以参照这个外国网站,这个解决的最彻底:https://reviews.llvm....

2019-06-14 17:28:23 3397

原创 CUDA学习-atomicAdd的理解

再cdp快速排序的文章里有提到atomicAdd函数是先赋值后进行加法计算的,这里直接贴上它的实现函数便于更加深刻的理解。这个代码来自官方文档:https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.htmlatomicAdd实际是调用atomicCAS函数,atomicSub、atomicMax等函数都是如此,了解一个就...

2019-05-24 19:09:30 12618

原创 CUDA学习-cdp快排实现(一次快排)

cdp快排实现(预备知识):https://blog.csdn.net/shungry/article/details/90520554理解了快排的主要原理就,接下来通过官方例子进行进一步的理解。为了更好的进行理解,把官方例子cdpAdvancedQuicksort拆解出一次快排的例子。__global__ void qsort_warp(unsigned *indata, ...

2019-05-24 18:51:38 2610 3

原创 CUDA学习-cdp快排实现(预备知识)

在用gpu实现快排之前,先回顾一下在用cpu进行快速排序的方法:void QuickSort(int array[], int start, int last){ int i = start; int j = last; int temp = array[i]; if (i < j) { while (i < j) ...

2019-05-24 17:41:13 1004

原创 Python学习(四)-定制类

在设计类的时候可以根据自己的需要定制类,其中主要用到的有__slots__、__str__、__repr__、__len__、__iter__、__next__、__getitem__、__setitem__、__getattr__、__call__等特殊的函数名以及@property和@xxx.setter。每个都有其特殊意义,能有助于我们更好的设计类控制类。__slots__:用于限制...

2019-05-12 22:03:36 220

原创 Python学习(三)-类属性与对象属性

什么是类属性,什么是对象属性?前面先讲一下动态类型与静态类型:动态类型与静态语言有所不同的,由于python是动态类型,这意味着python在创建对象时是可以随意增加属性。类属性是类本身的属性,无论这个类创建了多少的对象,其类属性依然只有一个,所以对象与对象之间可以共享类属性。对象属性则是对象的属性,会根据对象的创建而创建,销毁而销毁,对象与对象之间不能共享对象属性。特别注意:...

2019-05-10 20:23:26 989

原创 Python学习(二)-Iterator、Iterable和for的关系

在python中进行循环迭代取数据大多使用for语句,for语句可以迭代的类型有许多,但是与Iterator和Iterable有什么关系呢?字面翻译:Iterator是迭代器,而Iterable是可迭代的意思。像我们常用的list,tuple,dict,set,str通过代码可以发现都属于可迭代的,即Iterable:那什么是Iterator呢?同样对上面的例子进行一遍测试:...

2019-05-10 19:55:29 352

原创 CUDA学习(四)-整体结构

本文参考:《CUDA Programming Guides》,《Professional CUDA C Programming》正文:整体结构将主要分为逻辑结构,物理结构两个方面进行理解:首先一定要对怎么cpu与gpu异构模型有一定的了解,CPU 与 GPU通过中间的PCI总线进行连接和传输。根据前文NVCC的编译过程,我们可以了解到,一个.cu文件经过编译之后会更具不同的硬件转化为其...

2019-05-09 22:21:14 876

原创 Python学习(一)-深浅拷贝

我们了解到很多语言都有深浅拷贝一说,之前我只是单纯的将引用当作浅拷贝,而把独立开辟空间将数值一一进行复制理解为深拷贝。这种想法在一定情况下是错误的,比如Python。这里我们必须区分两种情况,其拷贝对象是可变对象还是不可变对象。可变对象:赋值:如果是单纯的赋值,这只是一个简单的索引拷贝,即两个变量同时指向了一个内存空间,如下图:如果改变b中的值,则a中的值也会发生变化,a和...

2019-05-09 19:56:46 205

原创 CUDA学习(三)-NVCC的分散编译

nvcc编译过程第一篇:https://blog.csdn.net/shungry/article/details/89715468nvcc编译过程第二篇:https://blog.csdn.net/shungry/article/details/89788342正文:nvcc的分散编译必须在CUDA5.0版本之后才支持,在此之前是不支持的。也就是说以前的版本一贯支持单独的主机代码的编...

2019-05-07 16:43:44 2076

原创 CUDA学习(一)-NVCC的编译过程

正文:NVCC的编译过程总体可以用一个图进行描述:NVCC的编译过程分为离线编译和即时编译两部分组成:离线编译(绿色虚线框内):CUDA源程序(即xxx.cu文件)在编译前的预处理会被分为主机端代码和设备段代码(即图中的左右分支):1.如图右分支:在设备端代码会被编译成ptx文件(可以看作是用于设备端的汇编文件)或是直接可运行的二进制文件xxx.cubin,然后将起.ptx...

2019-05-07 16:43:29 6583

原创 CUDA学习(二)-NVCC的编译过程及命令

nvcc编译过程第一篇:https://blog.csdn.net/shungry/article/details/89715468正文:编译流程(补充)以我mytest.cu为例子,输入以下命令:nvcc --cuda .\mytest.cu -keep 先解释里面命令的含义,--cuda/-cuda是将.cu文件编译成一个.cu.cpp.ii的文件;--keep/-k...

2019-05-03 20:40:59 17239

转载 计算机图形学图书下载

链接:https://pan.baidu.com/s/13fSd_37mUySUnaE93Sa2lw 密码:2m61

2019-02-21 10:17:58 4897 6

原创 C++ 虚函数virtual原理

学习c++的都知道要想实现多态都会用到virtual关键字。class A{public: virtual void out() { cout &lt;&lt; "a" &lt;&lt; endl; } virtual void print() { cout &lt;&lt; "A to print" &lt;&lt...

2019-01-29 14:13:19 999

原创 C++“前置++”和“后置++”的原理

直接上代码//前置++T&amp; operator++(){ this = this + 1; //执行递增 return *this;}//后置++T operator++(int) //占位符,表示后置++{ T tmp = this; this = this + 1; //执行递增 return tmp; //返回临时值 }...

2019-01-28 16:33:51 2550 2

原创 C++的单例模式

单例模式即从头到尾就只有一个实例,你也无法再new出其他,或拷贝出来。一般的单例模式都会运用到关键词 static ,由static的特性,在静态常量区只会存在一个数据,在编译时就分配空间和类同时加载,所以可以直接用类名进行访问。#include &lt;cstring&gt;#include &lt;string&gt;#include &lt;iostream&gt;#includ...

2018-12-31 12:16:39 149

原创 C++的explicit的作用与隐式转化

了解explicit之前,要先弄清楚什么是隐式转化。隐式转化既是当构造器只有一个参数时或有多个默认参数时,可以直接用 “ = ”直接赋值。如下:#include "pch.h"#include &lt;string&gt;#include &lt;iostream&gt;#include "malloc.h"using namespace std;class A{public...

2018-12-30 20:18:02 182

原创 C++重载的实质

重载函数是如何在运行时被识别,且不会出错的?void function ();void function (int a,int b);void function (int a,double b);在编译过程中,编译器会将其改为 _function 、_function_int_int 、 _function_int_double。所以在运行时,它们实际的,名字是不同的,且很好识别。...

2018-12-30 11:21:45 217

原创 C++内联函数与宏定义的区别

宏定义       宏定义作为C语言里面经常使用的工具,其实就相当于一个标签,在编译预处理时会直接将全部代码中的宏定义进行替换。       在很多方面十分的方便,比如 “ #define MAX(x,y)  x &gt; y ? x : y ” 取最大值是十分方便的,但是由于它是预处理时的简单替换,所以会发生一些无法察觉的问题:#define ADD(x,y) x+yvoid t...

2018-12-30 10:58:56 1293

原创 C++的引用与常量

引用的本质之前一直搞不清楚引用是什么,引用其本质就是 (int* const),如下一个简单的引用方式:int a = 10;int&amp; b = a;其实在编译时,编译器会将“ int&amp; b = a ” 变为 “ int* const b = &amp;a ”;由于int* const 所修饰的变量必须要赋初值,且由于const 修饰的 b ,所以表示b指针是无法...

2018-12-29 21:55:15 303

原创 一些杂谈或自制GUI的一些反思

自制GUI前1-3篇:https://blog.csdn.net/shungry/article/details/78573355自制GUI第4篇:https://blog.csdn.net/shungry/article/details/78659613自制GUI第5篇:https://blog.csdn.net/shungry/article/details/85246023———...

2018-12-25 13:48:41 709

原创 自制嵌入式GUI 第5篇

自制GUI前1-3篇:https://blog.csdn.net/shungry/article/details/78573355自制GUI第4篇:https://blog.csdn.net/shungry/article/details/78659613———————————————————————分割线—————————————————————————写在开头: 其...

2018-12-25 12:36:49 2040

原创 实现自己的信号与槽机制-借鉴Qt

如果对Qt的信号与槽机制不太理解可以查看以下网址:http://blog.csdn.net/fuyunzhishang1/article/details/48345381该博主讲的十分的清楚。最近我自己在做基于嵌入式的GUI,重构了好几遍总觉得自己的消息机制很繁琐,直到自己看到了Qt。并稍微的了解了下其中的实现原理,觉得精妙无比,想下定决心自己也做一个。但是一开始就遇到了问题:...

2017-12-21 14:09:37 886

原创 自制嵌入式GUI 第4篇

自制GUI前1-3篇:https://blog.csdn.net/shungry/article/details/78573355 自制GUI第5篇:https://blog.csdn.net/shungry/article/details/85246023 ———————————————————————分割线———————————————————...

2017-11-28 21:33:50 3306

原创 自制嵌入式GUI 【前1-3篇】-基于freeRTOS

自制GUI第4篇:https://blog.csdn.net/shungry/article/details/78659613自制GUI第5篇:https://blog.csdn.net/shungry/article/details/85246023———————————————————————分割线—————————————————————————本篇文章我在野火论坛中发布过,现在...

2017-11-19 11:25:47 15076 11

原创 关于freertos移植到stm32出错,程序直接跳到HardFault_Handler的问题。

第一次移植freertos,使用野火的是stm32f429,在自己之前写的程序上移植的。但是移植之后每次运行到vTaskStartScheduler的时候就会跳转到HardFault。怎么调都调不好。我的解决办法:我把所有的NVIC中断的NVIC_PriorityGroup_0改为NVIC_PriorityGroup_4就可以了。一脸懵逼,这是什么原理?有大神知道不?

2017-10-11 21:51:59 3704

VRPTW Solomon Gehring & Homberger benchmark.zip

VRPTW 数据集,包括Solomon 和 Gehring & Homberger的benchmark。并且附上最优解的截图。

2020-09-14

MiniGUI编程指南-V3

由北京飞漫软件技术有限公司开发的 MiniGUI(http://www.minigui.com),是国内为数不多的几大国际知名自由软件之一。其 目标是为实时嵌入式操作系统建立一个跨操作系统的、快速、稳定和轻量级的窗口系统及图形用户界面支持系统。 我们 将 MiniGUI 定义为“针对嵌入式设备的、跨操作系统的图形界面支持系统”,属于一种“嵌入式图形中间件”软件产品。目前, MiniGUI 已成为跨操作系统的图形用户界面支持系统,可在 Linux/uClinux、eCos、VxWorks、pSOS、ThreadX、Nucleus、uC/OS-II、 OSE 等操作系统,以及 Win32 平台上运行。

2017-11-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除