摘要:
它是插入排序的改进版,看比较://插入排序void insert_sort(int *arr,int n){ //priot为了保存哨兵元素 int pviot = 0, j = 0; //第一个元素有序,因此从i=1开始 for (int i = 1; i < n; ++i) { pviot = arr[i]; j = i-1; //如果哨兵元素之前的元素比自己大,则不断移位 while(j >= 0 && arr[j] >= pviot) { my_swap(arr[j],arr[j+1]); --j; } //放置哨兵元素到适当位置 arr[j+1] = 阅读全文
摘要:
by pluskid, on 2010-09-08, inMachine Learninghttp://blog.pluskid.org/?p=632本文是“支持向量机系列”的第一篇,参见本系列的其他文章。支持向量机即Support Vector Machine,简称 SVM 。我最开始听说这头机器的名号的时候,一种神秘感就油然而生,似乎把 Support 这么一个具体的动作和 Vector 这么一个抽象的概念拼到一起,然后再做成一个 Machine ,一听就很玄了!不过后来我才知道,原来 SVM 它并不是一头机器,而是一种算法,或者,确切地说,是一类算法,当然,这样抠字眼的话就没完没了了,比 阅读全文
摘要:
在网上找了一下,在群里网友说用什么hook,搜了一下,hook基本上截获鼠标或控件的消息,但是我是要实现在OnLButtonDown全局事件里捕获某控件被点击的消息,突然在CSDN中搜到了一篇说是可以在OnCommand()中设置全局标志位,然后根据标志位就可以知道此控件是否被点击了。的确,很有效,伪代码:void C**View::OnXX() { // TODO: Add your command handler code here XX_clilk = true;}实现了监视,但是测试时还是遇到了点问题,以后再慢慢调试吧,呵呵,今天搞到这里。 阅读全文
摘要:
因为最终分类可视化的要求,所以要把分类后的区域以跟样本区域相同的颜色去填充,这样就可以直观地得到分类效果图。主要思想:1.输出区域ID及其特征(颜色、纹理、形状等);2.人机交互选择样本,为了方便起见,X个地物均选择Y个样本,总共是X*Y个样本容量;3.建立分类器对所有区域进行类别标定。4.提取区域region_ID和类别号class_ID,并保存成class_result.txt文件格式(在这里选择了“region_IDclass_ID”的保存格式)5.读取class_result.txt,目的:映射回原图像区域进行填充。在这里写了一个函数: std::ifstream class_file 阅读全文
摘要:
之前保存分割区域特征值,结果看全部区域都保存了,很没必要,只需要把最终区域保存下来就行了,在这里用了一个vector保存区域ID,然后对整张图进行循环查找判断伪代码:for i[0,hight]for j[0,width]vector vcr;get curRegionID;if vcr.find(curRegionID) == falsevcr.pushback(curRegionID);savecurRegion feature;经调试正确。 阅读全文
摘要:
鉴于libSVM中的readme文件有点长,而且,都是采用英文书写,这里,我把其中重要的内容提炼出来,并给出相应的例子来说明其用法,大家可以直接参考我的代码来调用libSVM库。第一部分,利用libSVM自带的简易工具来演示SVM的两类分类过程。(以下内容只是利用libSVM自带的一个简易的工具供大家更好的理解SVM,如果你对SVM已经有了一定的了解,可以直接跳过这部分内容)首先,你要了解的是libSVM只是众多SVM实现版本中的其中之一。而SVM是一种进行两类分类的分类器,在libSVM最新版(libSVM3.1)里面,已经自带了简单的工具,可以对二分类进行演示。以windows平台为例,将 阅读全文
摘要:
插入排序:简单来说,对一个序列,无序的元素一个个地插入已排序的部分。C++实现:#include<iostream>//交换数据inline void my_swap(int &a, int &b){ int temp = a; a = b; b =temp;}//插入排序void insert_sort(int *arr,int n){ //priot为了保存哨兵元素 int pviot = 0, j = 0; //第一个元素有序,因此从i=1开始 for (int i = 1; i < n; ++i) { pviot = arr[i]; j = i-1; 阅读全文
摘要:
快速排序学习的这个版本的特点是:1.原地排序2.采用了分治法3.采用递归伪代码:quick_sort(arr, low, high)i <-low, j <- high;mid <- (i+j)/2;实现从小到大排//设置哨兵pivot <- arr[mid];while i<= j从左向右寻找大于哨兵的元素,当然小于哨兵的就是无需排序的while arr[i] < pivot ++i;从右向左寻找小于哨兵元素while arr[j] > pivot --j;把寻找到的无序值进行交换并更新i,jif i <= j swap(arr[i],arr[ 阅读全文
摘要:
伪代码:int put list[1->n];for i <- n to 1 for j = 0 to i-1 if list[j]>list[j+1] swap(list[j],list[j+1])C++实现:#include<iostream>//交换数据inline void my_swap(int &a, int &b){ int temp = a; a = b; b =temp;}//冒泡排序void bubble_sort(int *arr,int n){ for (int i = n-1; i >= 0; --i) for (i 阅读全文
摘要:
快速排序Quicksort is a fast sorting algorithm, which is used not only for educational purposes, but widely applied in practice. On the average, it has O(n log n) complexity, making quicksort suitable for sorting big data volumes. The idea of the algorithm is quite simple and once you realize it, you can 阅读全文
摘要:
解决方法很简单1、确认安装有VC2、如果安装有VC,在出现Please choose your compiler for building external interface (MEX) files: Would you like mex to locate installed compilers [y]/n? 的时候输入n3、此时会列出matlab支持的编译器[1] Intel C++ 9.1 (with Microsoft Visual C++ 2005 SP1 linker) [2] Intel Visual Fortran 10.1 (with Microsoft Visual C+ 阅读全文
摘要:
原始数据输入spass:View Code 0.25 1200.000.30 1000.000.35 900.000.40 800.000.45 700.000.50 600.000.55 550.000.60 500.000.65 450.000.70 400.000.75 350.000.80 300.000.85 250.000.90 200.000.95 150.001.00 100.00然后进行回归分析:把自变量和因变量拖进相关行,点击确定:双击自动产生的回归图:双击曲线,就出现属性窗口,最后就看到拟合方程了:ok!就是这样! 阅读全文
摘要:
转自http://superjiju.wordpress.com/2008/04/07/cc-%E7%9B%B8%E5%85%B3%E7%AC%94%E8%AF%95%E9%A2%98%EF%BC%881%EF%BC%89/1. static有什么用途?(请至少说明两种)答 、1.限制变量的作用域。 2.设置变量的存储域。2. 引用与指针有什么区别?答 、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。3. 描述实时系统的基本特性 答 、在特定时间内完成特定的任务,实时性与可靠性。4. 全局变量和 阅读全文
摘要:
题目截图:直接上代码,没时间啦,明天就笔试啦:#include <iostream>#include <string>using namespace std;string alphabet = "abcdefghijklmnopqrstuvwxyz";char replace_char(char s){ for (size_t i = 0; i < alphabet.size();++i) { if(s == alphabet[i]) return alphabet[(i+3)%26]; } return s;}void coding(stri 阅读全文
摘要:
by jl http://apple3101.wordpress.com/2009/04/09/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%A4%AA%E7%AE%80%E5%8D%95%EF%BC%9F/机器学习没有一个统一的问题,各种方法之间的重合太少,因此研究一种方法可以不用了解或深究其他方法。没有一种方法是万能的,对于具体问题,可能这种方法好,对于另一个问题,可能另一种方法更好。这种现象造成了:在特定的问题上的机器学习方法,经常是最先用的那个。分析机器学习的方法受一些为它而设计的假设而限制;因此很多文章都力图找到能出好结果的假设。有几种研究机器学习的 阅读全文
摘要:
看了别人其他的实现,代码如下:void CHC::SaveSeg(GDALDataset *m_pDataset,CString pathname){ int len = pathname.ReverseFind(_T('.')); CString name1 = pathname.Left(len); int L=Height*Width; int x,y,d,sernum,label; int nByteWidth=d_*Width; float* buf =new float[Width*Height]; GDALRasterBand *m_pBand=NULL; for 阅读全文
摘要:
#include<iostream>using namespace std;struct node{ int data; node *next;};class List{public: List(); List(List &L); ~List(); void insert(const int); bool IsEmpty(); size_t ListLen(); int GetElem(size_t); void append(size_t,int);//在第i个位置插入数值 void Display(); void remove(size_t); int FindElem 阅读全文
摘要:
最近发现wordpress上很多有意思的技术博客,但奇怪的是用google几乎无法之家搜到,今天各种找方法:1.关键词+powered by wordpress;找到了继续添加!2.按照http://www.arongseo.com/archives/366提高的信息,在google上添加了自己的wordpress搜索,首先打开google自定义搜索界面http://www.google.com/cse/?hl=zh-CN,并点击“创建自定义搜索引擎”然后按照自己的需要填写:然后添加进自己的igoogle:,搞定,更牛叉的是因为我用的火狐的搜索引擎插件,所以直接再添加进去就更方便了:就这样,O 阅读全文
摘要:
K Nearest Neighbors这个算法首先贮藏所有的训练样本,然后通过分析(包括选举,计算加权和等方式)一个新样本周围K个最近邻以给出该样本的相应值。这种方法有时候被称作“基于样本的学习”,即为了预测,我们对于给定的输入搜索最近的已知其相应的特征向量。CvKNearestclass CvKNearest : public CvStatModel //继承自ML库中的统计模型基类{public: CvKNearest();//无参构造函数 virtual ~CvKNearest(); //虚函数定义 CvKNearest( const CvMat* _train_data, const 阅读全文
摘要:
http://idlandrs.bokee.com/viewdiary.34994406.html没想到这么简单:直接鼠标点击中键。5555555,我一直以为画得时候可以这样,画完后就不行了。一直小心翼翼地画。 阅读全文
摘要:
转http://blog.sciencenet.cn/home.php?mod=space&uid=205121&do=blog&id=322415最近写论文,很困惑的是:为啥那些那些大牛的文章(发表在大牛刊物上的文章,倒未必是大牛写的了),怎么能写出那么多对实验结果的分析?洋洋洒洒的一大段,篇幅甚至超过算法本身的描述。而我自己写的时候,把结果一帖:两个数据上的几条曲线:分析就是,验证了我的算法,比某某方法好,然后写啥?就不知道了,干巴巴的就那几句?篇幅都凑不够,明明知道应该写更多,可是不知道如何下手?怎么办怎么办?请各位大牛出招。======黄金分割线======== 阅读全文
摘要:
int CImageDoc::lookregion(int cx,int cy,int option){ int mh=m_DIB.m_nHeight,mw=m_DIB.m_nWidth; if(cx<0||cy<0||cx>(mw-1)||cy>(mh-1)) { AfxMessageBox("Click on the map!"); return -1; } curRegion=m_HC.tag[cy*mw+cx]; if(curRegion<0) { AfxMessageBox("tag array of region labe 阅读全文
摘要:
函数cvDrawContours用于在图像上绘制外部和内部轮廓。当thickness >= 0 时,绘制轮廓线;否则填充由轮廓包围的部分。void cvDrawContours( CvArr *img, CvSeq* contour, CvScalar external_color, CvScalar hole_color, int max_level, int thickness=1, int line_type=8, CvPoint offset=cvPoint(0,0) );img要在其上绘制轮廓的图像。和在其他绘图函数里一样,轮廓是ROI的修剪结果。contour指向第一个轮廓的 阅读全文
摘要:
罗列你知道的排序算法,并注明他们的复杂度冒泡排序法 复杂度是O(n2)选择排序负 复杂度是O(n2)插入排序法 复杂度是O(n2)合并排序法 复杂度是O(nlgn)快速排序法 复杂度是O(nlgn)合并排序法 复杂度是O(nlgn)Shell排序法 复杂度是O(nlgn) 阅读全文
摘要:
#include <iostream>using namespace std;class String{public: String(const char *str = NULL); // 通用构造函数 String(const String &another); // 拷贝构造函数 ~ String(); // 析构函数 String& operator =(const String&);// 赋值函数 friend ostream& operator << (ostream&, const String& s); fr 阅读全文
摘要:
/////////////////////////////////////////// 文件名: MyString.h// 作者: Carrie Chen// 日期: 2007年11月17日// 用途: CString类源程序// 开发平台: VC++2005/////////////////////////////////////////#include <string>#include <stdlib.h>#include <iostream>#include <exception>#include <string.h>using 阅读全文
摘要:
1.求下面函数的返回值(微软)int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。2. 什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义 阅读全文
摘要:
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 (转载)一直计划着使用灰度共生矩阵来提取图像的纹理特征,就在一些论坛里搜罗来了不少程序,然后机械地来处理手头的图片,获得了一些个数字,就以为灰度共生矩阵法就这么回事了。这些天专门研学习一下这个方法,觉得学习上还是存在问题!发现:其实,自己对灰度共生矩阵怎么来的,计算又是怎么计算的,并不清楚,郁闷却无解。通过跟一些网友交流,肯定了这个想法之后,认真的看了一些资料,有以下新认识:灰度共生矩阵法,顾名思义,就是通过计算灰度图像得到它的. 阅读全文
摘要:
今天看到了void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc) { // try to allocate size bytes void *p; while ((p = malloc(size)) == 0) if (_callnewh(size) == 0) { // report no memory static const std::bad_alloc nomem; _RAISE(nomem); } return (p); } 阅读全文
摘要:
参考网上的代码,谁知道有问题,修改了下,貌似可以了,VS2008上试验毫无鸭梨。#include <iostream>using namespace std;//计算长度size_t str_len(char *str_source){ size_t i = 0; while (*str_source++ != '\0') { ++i; } return i;}//翻转指定位置的字符串char *reverse_str(char *str_source,size_t str_begin,size_t str_end){ size_t len = str_len(st 阅读全文