摘要: 我在网上查找安装方法时有两种方式,第一种方案在第三步测试的时候没有成功,不知道问题出在哪里,换用了第二种方式。如果直接用第二种方式安装不成功,可以试试进行第一种方式的第2步。 安装环境是Ubuntu 10.04,内核版本2.6.32.22。OpenCV版本为2.4.3。第一种方式,参考自:http://www.opencv.org.cn/index.php/Debian%E4%B8%8B%E5%AE%89%E8%A3%851.更新下载更新软件包列表信息$ apt-get update2.查询OpenCV相关软件包 查询获得的内容和OpenCV软件包版本有关$ apt-cache sea... 阅读全文
posted @ 2012-12-10 16:27 五岳 阅读(8237) 评论(0) 推荐(0)
摘要: 安装方法:(参考自http://blog.csdn.net/abee23/article/details/7391859,很详细,下面的整理只为存档)1.下载$cd ~/Download$mkdir matlab$cd matlab$wget -c http://math.whut.edu.cn/shumo/special/msoft/mac/matlab_unix_2009b.iso(wget支持断点续传,但是我是用Win下的下载工具进行的)2.安装安装环境: Linux wy-desktop 2.6.32.22 #7 SMP Wed Jul 11 15:31:29 CST 2012 i6. 阅读全文
posted @ 2012-12-10 11:24 五岳 阅读(4294) 评论(0) 推荐(0)
摘要: 出处:http://blog.csdn.net/lichengyu/article/details/8009246《图像处理分析与机器视觉》计算全局图像中各个像素点对子图像的距离。ALALALPAL Mask 1BRPBRBRBR Mask 21. 将图像进行二值化,子图像值为0,背景为255;2. 利用Mask 1从左向右,从上到下扫描,p点是当前像素点,q点是Mask 1中AL邻域中的点,D()为距离计算,包括棋盘距离、城市距离和欧式距离。F(p)为p点的像素值,计算F(p) = min( F(p), F(q)+D(p,q) ), 其中,q属于AL.3.... 阅读全文
posted @ 2012-12-09 16:40 五岳 阅读(904) 评论(0) 推荐(0)
摘要: 有关于VC维可以在很多机器学习的理论中见到,它是一个重要的概念。在读《神经网络原理》的时候对一个实例不是很明白,通过这段时间观看斯坦福的机器学习公开课及相关补充材料,又参考了一些网络上的资料(主要是这篇,不过个人感觉仍然没有抓住重点),重新思考了一下,终于理解了这个定义所要传达的思想。 先要介绍分散(shatter)的概念:对于一个给定集合S={x1, ... ,xd},如果一个假设类H能够实现集合S中所有元素的任意一种标记方式,则称H能够分散S。 这样之后才有VC维的定义:H的VC维表示为VC(H) ,指能够被H分散的最大集合的大小。若H能分散任意大小的集合,那么VC(H)为无穷大。... 阅读全文
posted @ 2012-12-03 16:44 五岳 阅读(36483) 评论(11) 推荐(5)
摘要: http://www.cnblogs.com/kuangbin/archive/2011/07/26/2117636.html 阅读全文
posted @ 2012-11-18 17:16 五岳 阅读(122) 评论(0) 推荐(0)
摘要: 距离上一篇中间时间比较长,按照《算法导论》写了一些C语言实现,不过并没有一一贴上来的打算。这个算法融合了Bellman-Ford算法和Dijkstra算法,并且Dijkstra算法本身还使用了优先级数组(可用二项堆或斐波那契堆实现,这里用的是二项堆实现),性能比较好,达到了O(V2lgV+VE)的时间复杂度,在无负权回路图中是最快的,比较有代表性,因此把我参考自《算法导论》写成的C代码放在这里留档。 这个算法不是对二者的简单融合,其中的重赋权值有理论依据,此处略去,可以参考原书。算法步骤简述:1.计算图G加入新结点后的图G’,加入的新结点0到所有原结点之间距离为0,同时形成新的边集E' 阅读全文
posted @ 2012-11-16 22:39 五岳 阅读(2811) 评论(3) 推荐(0)
摘要: (学习的主要对象是《算法导论》上B-树章节)应用环境: 辅存和主存的矛盾,主存只能维持有限的页数,其他页存于辅存上,使用时调入内存。B树的定义: 是一个具有如下性质的有根树: (1)每个结点x有以下域: (a)n[x],存放结点x的关键字数; (b)n[x]个关键字本身,以非降序存放; (c)leaf[x],1代表x是叶子,0代表x是内结点。 (2)每个内结点包含n[x]+1各指向其子女的指针。叶结点对这个域没有定义。 (3)各关键字对其各子树关键字范围进行分隔。 (4)每个叶结点深度相同。 (5)每个结点包含的关键字有上界和下界,用t表示最小度数,则有 ... 阅读全文
posted @ 2012-10-23 11:45 五岳 阅读(449) 评论(0) 推荐(0)
摘要: 来源:http://www.cnblogs.com/zhangchaoyang/articles/1855744.html部分摘要:#include<stdio.h>#include<stdlib.h> #define ROW 5#define COL 4 main(){ int i; int **arr; arr=(int **)malloc(ROW*sizeof(int*)); for(i=0;i<ROW;++i) arr[i]=(int*)malloc(COL*sizeof(int)); printf("%d\n",arr[ROW-1.. 阅读全文
posted @ 2012-10-02 15:54 五岳 阅读(327) 评论(0) 推荐(0)
摘要: 原文:http://blog.sina.com.cn/s/blog_91dfee0b0101108f.html方法一、 my_function1(int my_arry[10][20])方法二、my_function1(int my_arry[][20])方法三、 my_function1(int (* my_arry)[20])//只有把二维数组改为一个指向向量的指针数组(Ififfe向//量,int *p[10])的前提下才可以方法四、 char_array[row_size*i+j]=......//弄成一维的一维数组---没有问题,但需要包括一个计数值或者是一个能够标识越界位置的结束符 阅读全文
posted @ 2012-10-01 18:56 五岳 阅读(315) 评论(0) 推荐(0)
摘要: (学习的参考资料主要是《算法导论》。) 首先是红黑树的性质。一棵二叉查找树满足以下的红黑性质,则为一棵红黑树。 1)每个结点或是红的,或是黑的。 2)根结点是黑的。 3)每个叶结点(NIL)是黑的。 4)红结点的两个孩子都是黑的。 5)对任意结点,从它到其子孙结点所有路径上包含相同数目的黑结点。 初学时并不在意,但是仔细研究相关算法就会知道,算法都是围绕保持这些性质来进行的。性质5)保证了红黑树使用时的高效。定理证明了n个内结点的红黑树高度至多为2lg(n+1)。 不同于一般二叉查找树,红黑树一般采用一个哨兵结点代表NIL,这对算法的使用提供了很多方便,具体编写时可以体会的到。... 阅读全文
posted @ 2012-09-28 17:12 五岳 阅读(514) 评论(0) 推荐(0)
摘要: 实例出自Simon Hayking的《神经网络原理》多层感知器一节。 问题简单叙述如下:从0和1的重集中选择2个元素进行异或,其输入是非线性可分模式。即,不能用一条直线将(0,0)、(0,1)、(1,0)、(1,1)根据它们异或的结果用一条直线进行划分。因此,一个简单感知器不能解决XOR问题。这里使用隐藏神经元进行解决划分问题。程序比较简单,也没什么泛用性。 激活函数phi(这里使用阈值函数)、神经元neuron、权值、偏置等术语请参照原书。模拟程序如下:#include <stdio.h>#include <stdlib.h>struct neuron { int w 阅读全文
posted @ 2012-09-17 19:14 五岳 阅读(1041) 评论(0) 推荐(0)
摘要: 在这两种架构下添加系统调用的步骤是类似的,简要地比较一下,以2.6.28.6内核为例。 1.在内核源码相应位置(如sys.c或其他与这个函数联系紧密的文件)添加新的内核函数作为系统调用,形如asmlinkage long sys_foo(void) {} 2.加入系统调用表。ARM架构存放于/arch/arm/kernel/call.S中,形如CALL(sys_foo);x86架构放于/arch/x86/kernel/syscall_table_32.S中,形如.longsys_foo。 3.定义系统调用号。ARM架构存放于/arch/arm/include/asm/unistd.h... 阅读全文
posted @ 2012-08-09 10:02 五岳 阅读(1199) 评论(0) 推荐(0)
摘要: 以S3C6410为例,此时arm-none-linux-gnueabi-4.3.2已经安装完毕。 首先把和板子上烧写的内核同样的内核源码放置到任意目录下,如/usr/src/s3c-linux-2.6.28.6-Real6410。(内核源码需要配置,而板子附带CD上一般是配置好的,在上面修改简单一些) 进行make或./build。遇到了报错,找不到XX文件。查看了一下,指定目录下是有这个文件的。make clean再进行./build就行了。 在需要编译的目标代码目录下编写makefile文件,内容如下:CROSS_COMPILE:= arm-linux-ARCH:= armCC:... 阅读全文
posted @ 2012-08-07 11:40 五岳 阅读(8877) 评论(0) 推荐(1)
摘要: 需求源于项目中一部分设计的代码。struct semaphore类型的信号量,使用up()进行释放,down_interruptible()和down()获得指定信号量(前者中,若该信号量已争用则进入可中断睡眠,后者进入不可中断睡眠)。 理想中的流程应该是线程调用down()阻塞一个信号量,等待另一个线程调用up()释放,从而实现同步。但如果另一个线程使用up()释放多次,会有怎样的结果呢?LKD上没有进行详细的解释,我使用一个简单的测试程序,其中的核心代码如下:/* A线程,释放信号量 */while(!kthread_should_stop()){ up(&my_sem); ... 阅读全文
posted @ 2012-07-21 20:09 五岳 阅读(1179) 评论(0) 推荐(0)
摘要: EXPORT_SYMBOL出现于2.6内核,可以把内核中的函数导出到全局符号表供其他内核模块(包括用户自己写的内核模块)使用。有个限制是,这个导出的符号不能是static类型。由于需要使用内核的do_adjtimex()函数进行tick_length的调节,而这个函数在/kernel/time/ntp.c中,这里便以此为例。 首先需要在函数定义后加入“EXPORT_SYMBOL(do_adjtimex);”并且在这个c文件开头进行module.h头文件的包含(#include <linux/module.h>)。这时需要编译内核。 然后,在自己编写的内核模块用extern声明这个函 阅读全文
posted @ 2012-07-12 15:29 五岳 阅读(1046) 评论(0) 推荐(0)
摘要: (转载注:这篇文章对于我有很大的帮助,只看了一半就把目前手上的内核线程的问题解决了,而这个问题之前并没有找到合适的解决方法)原文地址:http://yijunzhu.diandian.com/?tag=%E5%86%85%E6%A0%B8【问题】编译Linux下面的代码,经常会遇到这种错误:undefined reference to `__udivdi3'【解决过程】之前遇到过几次了,都是类似的原因导致此问题的。后来才了解,其根本原因:嵌入式中,32位系统中(目前多数系统都是,比如ARM的片子),对于普通的a除以b(b为32位):(1)当a为32位,Linux 内核中,常用uint3 阅读全文
posted @ 2012-07-05 11:29 五岳 阅读(2208) 评论(0) 推荐(0)
摘要: 接上一篇,能正确启动内核线程,就可以进行进一步的使用了。这里介绍下更改内核线程调度策略和优先级的方法。 个人理解,内核级线程和进程是一样的,前者与POSIX线程(pthread)有很大的区别。因此,内核的进程调度策略和系统调用也适用于内核级线程。 调度策略有三种: 1.SCHED_NORMAL 非实时调度策略,默认情况下是100~139,由nice值决定; 2.SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3.SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于... 阅读全文
posted @ 2012-07-04 15:54 五岳 阅读(4216) 评论(0) 推荐(0)
摘要: 启发主要来自于http://blog.csdn.net/newnewman80/article/details/7050090,基本是根据自己的习惯重组的。相关函数:kthread_create():创建内核线程struct task_struct *kthread_create(int (*threadfn)(void *data), void *data, const char namefmt[], ...); kernel thread可以用kernel_thread创建,但是在执行函数里面必须用daemonize释放资源并挂到init下,还需要用completion等待这一过程的... 阅读全文
posted @ 2012-06-28 17:39 五岳 阅读(1797) 评论(0) 推荐(0)
摘要: 原先曾以Socket编程为入口开始自己的新的学习,毕竟未曾致用,时至今日已比较生疏。借着阅读《UNIX网络编程(卷一)》(简称UNPv1)的机会,正好复习一番,而且希望将新的感受记录下来。一些技术细节翻阅原书即可,点到为止,不在这篇博文详述。 作者推荐在网络编程中使用snprintf()代替sprintf()、用fget()、strncat()和strncpy()分别代替gets()、strcat()和strcpy();同时提到了更好的替代函数strlcat()和strlcpy()。具体原因是前者的调用会使缓冲区溢出,而这是黑客网络入侵的一种方式。snprintf()需要缓冲区长度作为显... 阅读全文
posted @ 2012-06-19 20:48 五岳 阅读(1323) 评论(0) 推荐(0)
摘要: 在open、read、write的参数中,mode的接口提供的比较方便,通过对fs/namei.c中vfs_create()中添加判断,解除对高位的事后修改就能传入到文件的i_mode。然而i_mode各个位基本已被使用完毕,使用新的组合的mode可能会将这一类文件变为“古怪的文件”,虽然能用open()、read()、write()进行操作,但是不能用vi等工具打开,原因可能是没有针对这种mode添加进一步的其他操作,用起来并不像S_IFREG这种普通文件这么方便。 经指点和启发,使用这三个函数的flag位进行扩充是可行的,以下是实现方法。本文以2.6.13的内核为例。 /inclu... 阅读全文
posted @ 2012-06-04 11:44 五岳 阅读(3098) 评论(0) 推荐(0)
摘要: 来源:http://blog.chinaunix.net/uid-12567959-id-161000.htmlopen()系统调用的服务例程为sys_open()函数,该函数接收的参数为:要打开的文件的路径名filename、访问模式的一些标志flags,以及如果该文件被创建所需要的许可位掩码mode。如果该系统调用成功,就返回一个文件描述符,也就是指向文件对象的指针数组current-> files-> fd_array或者current-> files-> fdtable.fd中新分配给文件的索引;否则,返回-1。open()系统调用的所有标志---------- 阅读全文
posted @ 2012-05-24 21:06 五岳 阅读(641) 评论(0) 推荐(0)
摘要: 来源:http://blog.csdn.net/p_panyuch/article/details/5648007SYSCALL_DEFINE3 在何处定义?#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)#define SYSCALL_DEFINEx(x, sname, ...) / __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)#define __SYSCALL_DEFINEx(x, name, ...) ... 阅读全文
posted @ 2012-05-22 16:04 五岳 阅读(2067) 评论(0) 推荐(0)
摘要: 转载自maypeng.cublog.cnEXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。Linux symbol export method:[1] If we want export the symbol in a module, just use theEXPORT_SYMBOL(xxxx)in the C or H file. And compile the mod 阅读全文
posted @ 2012-05-21 10:55 五岳 阅读(233) 评论(0) 推荐(0)
摘要: 其实用这个标题随便baidu、Google出来都是一大堆,大部分都是转来转去,代码无非那么几种。可是真正编译通过还是费了不少功夫,我在双系统的Ubuntu10.04和虚拟机里的Red Hat9里来来回回不知折腾了多少次。所以本文更多的是记录下自己调试的细节,而不是简单的粘代码和转载。 目的是在不重新编译内核的前提下添加系统调用,思路倒是很简单,修改映射在内存中的系统调用表,把一个空闲的系统调用表项指向自己写的模块中的函数,如果是已使用的表项,甚至可以实现系统调用劫持。 分配的空闲的系统调用号依然要在源码的asm/unistd.h中去找,只是不用修改。如果没有unused的,怕是还是得重... 阅读全文
posted @ 2012-05-20 17:41 五岳 阅读(3648) 评论(0) 推荐(0)
摘要: 来源:http://hi.baidu.com/niuniu_2006923/blog/item/8cd001dda717103d5882dd34.htmlO'REILLY 写的《LINUX 设备驱动程序》中作者一再强调在编写驱动程序时必须 建立内核树。所谓内核树,我的理解和网上资料说的一致就是内核源码的一种逻辑形式。先查看自己OS使用的内核版本shana@shana:~$ uname -r2.6.22-14-generic /* 这是我显示的结果 */如果安装系统时,自动安装了源码。在 /usr/src 目录下有对应的使用的版本目录。例如下(我是自己下的)shana@shana:/us 阅读全文
posted @ 2012-05-18 10:37 五岳 阅读(234) 评论(0) 推荐(0)
回到顶部