E020

向量中的关系与逻辑表示,以及在数组操作、统计函数中的应用举例。

 

#include "stdafx.h"

#include "orsciJWVCL.h"
#include "orsciVM.h"
using namespace orsci;
using namespace orsci::vmt;


int main()
{
{
vdouble x;
x = "-5:10, 7, 8";
cout << x << endl; //-5,-4,...,8, 9, 10, 7, 8
vdouble y = x.view("0:4"); //获得0到4之间的数据向量。
cout << y << endl; //-5 -4 -3 -2 -1
cout << "最小值:" << minv(x) << endl;
cout << "最大值:" << maxv(x) << endl;
cout << " 求和:" << sum(x) << endl;
cout << " 均值:" << mean(x) << endl;
cout << "样本方差 :" << var(x) << endl;
cout << "总体方差:" << var_pop(x) << endl;
cout << "样本标准差:" << stddev(x) << endl;
cout << "总体标准差:" << stddev_pop(x) << endl;
cout << "中位数:" << median(x) << endl;
cout << " 众数:" << mode(x) << endl;
cout << "峰度系数:" << kurtousis(x) << endl;
cout << "偏度系数:" << skewness(x) << endl;
cout << endl;
cout << "带关系运算和逻辑运算展示..." << endl;
double mValue;
bool flagExist = minv(x, GT(0), mValue); //因为过滤后,还可能不存在最小值或最大值
if (flagExist) cout << "大于0的最小值:" << mValue << endl;
else cout << "大于0过滤后,不存在最小值!" << endl;
flagExist = maxv(x, BETWEEN(5.6, 8.9), mValue); //找5.6到8.9之间的最小值,注:过滤后还可能不存在最小值或最大值
if (flagExist) cout << "在5.6~8.9之间的最大值:" << mValue << endl;
else cout << "在5.6~8.9之间经过滤后,不存在最大值!" << endl;

cout << "小于0的数求和: " << sum(x, LS(0)) << endl;
cout << "小于0的数求均值:" << mean(x, LS(0)) << endl;
cout << "小于0的数求方差:" << var(x, LS(0)) << endl;
cout << "小于0的数的索引:" << find(x, LS(0)) << endl;
cout << "小于0的数包括: " << x.view(find(x, LS(0))) << endl;

cout << "回眸看一下x:" << endl;
reverse_inplace(x.view(find(x, LS(0)))); //小于0的数进行前后换序
cout << "小于0的数换序后:" << x << endl;
cout << "浮点数向量或矩阵中的,关系运算包括:LS、LEQ、GT、GEQ、EQU、NoEQU、BETWEEN、NoBETWEEN、INNER、NoINNER" << endl;
cout << "浮点数向量或矩阵中的,逻辑运算包括:NOT、AND、OR" << endl;
cout << "整数向量或矩阵中的,关系运算包括:LSi、LEQi、GTi、GEQi、EQUi、NoEQUi、BETWEENi、NoBETWEENi、INNERi、NoINNERi" << endl;
cout << "整数向量或矩阵中的,逻辑运算包括:NOT、AND、OR" << endl;
}
cout << "please input any key to stop..." << endl;
char pp;
cin >> pp;


return 0;
}

输出

(一)源程序

(一)程序运行结果

-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 7 8
-5 -4 -3 -2 -1
最小值:-5
最大值:10
求和:55
均值:3.05556
样本方差 :22.6438
总体方差:21.3858
样本标准差:4.75855
总体标准差:4.62448
中位数:3.5
众数:7 8
峰度系数:-1.25708
偏度系数:-0.237778

带关系运算和逻辑运算展示...
大于0的最小值:1
在5.6~8.9之间的最大值:8
小于0的数求和: -15
小于0的数求均值:-3
小于0的数求方差:2.5
小于0的数的索引:0 1 2 3 4
小于0的数包括: -5 -4 -3 -2 -1
回眸看一下x:
小于0的数换序后:-1 -2 -3 -4 -5 0 1 2 3 4 5 6 7 7 8 8 9 10
浮点数向量或矩阵中的,关系运算包括:LS、LEQ、GT、GEQ、EQU、NoEQU、BETWEEN、NoBET
WEEN、INNER、NoINNER
浮点数向量或矩阵中的,逻辑运算包括:NOT、AND、OR
整数向量或矩阵中的,关系运算包括:LSi、LEQi、GTi、GEQi、EQUi、NoEQUi、BETWEENi、
NoBETWEENi、INNERi、NoINNERi
整数向量或矩阵中的,逻辑运算包括:NOT、AND、OR
please input any key to stop...

(二)说明:

(1)vdouble、vint等向量都支持带有关系运算和逻辑运算的复杂表达式形式,例如sum()、count、find()、minv()、maxv()、mean()、var()、var_pop()、stddev()、stddev_pop()等。

(2)向量,请参看书籍:姜维. 《数据分析与数据挖掘》、《数据分析与数据挖掘实践》

(6)orsci包支持向量和矩阵计算,可下载配套软件orsci-art应用。

书籍 姜维. 《数据分析与数据挖掘》、《数据分析与数据挖掘实践》
软件 orsci-art开发包(C++语言、Delphi语言和C语言)。