Category: Programming Language

GSFLOW模型的Codeblocks编译

GSFLOW提供makefile文件,可以在linux系统下编译成功,采用msys虚拟linux系统可成功通过编译(赵彦博帮忙完成)。

然而,我想在windows下编译,并且我想在windows下进行调试。

这里有两种途径,一种是对makefile进行解析,弄清GSFLOW各个模块直接的关联和依赖关系,然后进行顺序编译,然后这不能实现所以模块一起编译,且不同模块如果要改代码,则需要写调试函数,否则不能调试,因为mmf, modflow以及prms模块都编译出lib,然后实现模型耦合,生产gsflow.这个途径显然麻烦。

另一种途径,就是直接在codeblocks下编译linu[……]

Read more

主成分分析(PCA )

关于主成分(PCA)分析,其实在上大学时就已经接触到了,当时感觉也没弄得十分清楚。前面花了点时间,来重新figure it out.

(1)真实的训练数据总是存在各种各样的问题:

1、 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余。

2、 拿到一个数学系的本科生期末考试成绩单,里面有三列,一列是对数学的兴趣程度,一列是复习时间,还有一列是考试成绩。我们知道要学好数学,需要有浓厚的兴趣,所以第二项与第一项强相关,第三项和第二项也是强相关。那是不是可以合并第一项和第二项呢?

3、 拿到一个样[……]

Read more

C 字符串处理

首先我们来看下面的代码。这个代码,目的是想对一行字符串(以#符号开始)的注释前后空白进行去除。如“  this is what I want   #this is the comment”, 我想得到“this is what i want”。

首先我们将字符串地址赋值给StrStart, 然后判断是否空白,如果是,则将地址向后移动一位,以此类推,这样找到了非空白字符地址(注意:这里没有删掉buffer前面的空白);

然后我们找到#所在的位置,然后将地址赋值给StrEnd (注意:这个地址是指向这个字符及其之后字符所组成的字符串首地址),然后将该地址所指的字符串复制为’\0’字[……]

Read more

Qt GUI初探

周末花点时间折腾QT GUI的东西,基本东西掌握得差不多了,现在点总结。

(1)第一步,我们新建一个主窗口,然后添加三个文本框,计算两个数据之和:

在UI deigner中拖入文本框,然后加入两个按钮,我们右键button1,选择->转入槽,关于基本概念,我就不解释了,进入到click事件响应函数里面:

然后,即可实现两个数据之和,并显示在文本3中。这里,为了理解Qt中信号与槽的机制,我做了一个的测试,我首先添加button Connect,然后再click事件响应函数中添加:

connect(this->ui->add,SIGNAL([……]

Read more

一种很好的C语言数据组织结构

问题:现在加入有m个网格,然后网格有不固定个数的河段(channel),每个channel有多个属性,然后给一种C语言数据组织结构对其进行组织?

分析:由于channel具有多个属性,所以需要建立结构体数据保存每条channel的多个属性;然后因为每个网格具有一条多条channel,因此需要建立指向结构体自己的指针;最后,由于具有m个网格,需要游历每个网格。

分析的前两步骤,给一个例子:

[……]

Read more

指针数组与数组指针

指针数组,首先它是一个数组,数组的元数都是指针,如:
int *p1[10] , 由于[]的优先级要高于*, 因此p1与[]结合,构成数组的定义,数组名为p1, int *修饰数组的内容,即数组中的每个元素。
数组指针,首先它是一个指针,它指向一个数组,它是“指向数组的指针”的简称,如:
int (*p2) [10], 由于()的优先级大于[], 因此*与p2构成指针的定义,指针变量名为p2, 它指向一个包含10个int类型的数据的一维数组,即数组指针。当二维数组分解为多个一维数组,则数组指针指向第一个一维数组。如a[3][10], p2=a, 则p2表示指向a[0],a[0]包含1[……]

Read more