亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vector.h

?? 在線支持向量機C++程序,程序中包含了應用的例子
?? H
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************
*                       ONLINE SUPPORT VECTOR REGRESSION                      *
*                      Copyright 2006 - Francesco Parrella                    *
*                                                                             *
*This program is distributed under the terms of the GNU General Public License*
******************************************************************************/


#ifndef VECTOR_H
#define VECTOR_H

#include <iostream>
#include <fstream>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <algorithm>
 
using namespace std;

namespace onlinesvr
{

	#ifndef MATH_UTILS
		#define MATH_UTILS
		#define INF 9.9e99
		
		template <class T>
		T ABS (T X) { if (X>=0) return X; else return -X; }

		template <class T>
		int SIGN (T X) { if (X>=0) return 1; else return -1; }
	#endif


	template<class T>
	class Vector
	{
	public:
		// Attributes
		T* Values;

		// Initialization
		Vector ();	
		Vector (T* X, int N);
		Vector (int Length);
		~Vector ();
		Vector<T>* Clone();
		int GetLength ();
		int GetStepSize ();
		void SetStepSize (int X);
		T GetValue (int Index);
		void SetValue (int Index, T Value);
		bool Contains (T Value);

		// Add/Remove Operations
		void Clear ();
		void Add (T X);
		void AddAt (T X, int Index);
		void RemoveAt (int Index);
		Vector<T>* Extract (int FromIndex, int ToIndex);
		
		// Pre-built Vectors
		static Vector<double>* ZeroVector (int Length);
		static Vector<double>* RandVector (int Length);
		static Vector<T>* GetSequence(T Start, T Step, T End);

		// Mathematical Operations
		void SumScalar (T X);	
		void ProductScalar (T X);
		void DivideScalar (T X);
		void PowScalar (T X);
		void SumVector (Vector<T>* V);	
		static Vector<T>* SumVector (Vector<T>* V1, Vector<T>* V2);	
		void SubtractVector (Vector<T>* V);
		static Vector<T>* SubtractVector (Vector<T>* V1, Vector<T>* V2);	
		void ProductVector (Vector<T>* V);
		static Vector<T>* ProductVector (Vector<T>* V1, Vector<T>* V2);
		T ProductVectorScalar (Vector<T>* V);
		static T ProductVectorScalar (Vector<T>* V1, Vector<T>* V2);
		T Sum();
		T AbsSum();

		// Comparison Operations
		T Min();
		void Min(T* MinValue, int*MinIndex);	
		T MinAbs();
		void MinAbs(T* MinValue, int*MinIndex);
		T Max();
		void Max(T* MaxValue, int*MaxIndex);
		T MaxAbs();
		void MaxAbs(T* MaxValue, int*MaxIndex);
		T Mean();
		T MeanAbs();
		T Variance();

		// Sorting Operations
		void Sort();
		void RemoveDuplicates();
		int Find(T X);

		// I/O Operations
		static Vector<T>* Load(char* Filename);
		void Save (char* Filename);
		void Print ();
		void Print (char* VectorName);

		// Operators Redefinition	
		T operator [] (int Index);

	private:
		// Private Attributes	
		int	Length;
		int	MaxLength;
		int	StepSize;

		// Private Methods
		void Resize ();
		void Resize (int NewSize);
	};




		
	////////////////////////////
	// METHODS IMPLEMENTATION //
	////////////////////////////

		
	// INITIALIZATION
	template<class T>
	Vector<T>::Vector ()
	{
		this->Length = 0;
		this->MaxLength = 0;		
		this->StepSize = 100;
		this->Values = NULL;
	}

	template<class T>
	Vector<T>::Vector (T* X, int N)
	{
		this->MaxLength = 0;
		this->StepSize = 100;
		this->Resize((int(N/this->StepSize)+1)*this->StepSize);
		for (int i=0; i<N; i++) {
			this->Values[i] = X[i];
		}
		this->Length = N;	
	}

	template<class T>
	Vector<T>::Vector (int Length)
	{
		this->Length = 0;
		this->MaxLength = 0;		
		this->StepSize = Length + 10;
		this->Values = NULL;
	}

	template<class T>
	Vector<T>::~Vector()
	{
		this->Clear();
	}

	template<class T>
	Vector<T>* Vector<T>::Clone()
	{
		return new Vector<T>(this->Values,this->Length);
	}

	template<class T>
	int Vector<T>::GetLength ()
	{
		return this->Length;
	}

	template<class T>
	int Vector<T>::GetStepSize ()
	{
		return this->StepSize;
	}

	template<class T>
	void Vector<T>::SetStepSize (int X)
	{
		this->StepSize = X;
	}

	template<class T>
	void Vector<T>::Resize ()
	{
		this->Resize(this->MaxLength+this->StepSize);
	}

	template<class T>
	void Vector<T>::Resize (int NewSize)
	{
		if (this->MaxLength==0) {
			this->Values = new T[NewSize];
		}
		else {
			T* NewValues = new T[NewSize];
			for (int i=0; i<this->GetLength(); i++)
				NewValues[i] = this->Values[i];
			delete[] this->Values;
			this->Values = NewValues;
		}

		this->MaxLength = NewSize;
	}

	template<class T>
	T Vector<T>::GetValue (int Index)
	{
		return this->Values[Index];
	}

	template<class T>
	void Vector<T>::SetValue (int Index, T Value)
	{
		this->Values[Index] = Value;
	}

	template<class T>
	bool Vector<T>::Contains (T Value)
	{
		for (int i=0; i<Length; i++) {
			if (Values[i]==Value)
				return true;
		}
		return false;
	}
	
	// Add/Remove Operations
	template<class T>
	void Vector<T>::Clear ()
	{
		this->Length = 0;
		this->MaxLength = 0;
		delete[] this->Values;
		this->Values = NULL;
	}

	template<class T>
	void Vector<T>::Add(T X)
	{	
		if (this->Length==this->MaxLength)
			this->Resize();
		this->Values[this->Length++] = X;
	}

	template<class T>
	void Vector<T>::AddAt (T X, int Index)
	{
		if (Index>=0 && Index<=this->Length) {
			if (this->Length==this->MaxLength) {
				this->Resize();
			}
			for (int i=this->Length-1; i>=Index; i--) {
				this->Values[i+1] = this->Values[i];
			}
			this->Values[Index] = X;
			this->Length ++;
		}
		else {
			cerr << "Error! It's impossible to add an element in an invalid index." << endl;
		}
	}

	template<class T>
	void Vector<T>::RemoveAt (int Index)
	{
		if (Index>=0 && Index<this->Length) {
			for (int i=Index; i<this->Length-1; i++) {
				this->Values[i] = this->Values[i+1];
			}
			this->Length --;
		}
		else {
			cerr << "Error! It's impossible to remove an element from the vector that doesn't exist." << endl;
		}
	}

	template<class T>
	Vector<T>* Vector<T>::Extract (int FromIndex, int ToIndex)
	{
		if (FromIndex>=0 && ToIndex<=this->Length-1 && FromIndex<=ToIndex) {
			Vector<T>* V = new Vector<T>(ToIndex-FromIndex+1);
			for (int i=FromIndex; i<=ToIndex; i++)
				V->Add(this->Values[i]);
			return V;
		}
		else {
			cerr << "Error! It's impossible to extract the vector: invalid indexes" << endl;
			return new Vector<T>();
		}
	}

		
	// Pre-built Vectors
	template<class T>
	Vector<double>* Vector<T>::ZeroVector (int Length)
	{
		Vector<double>* V = new Vector<double>(Length);
		for (int i=0; i<Length; i++)
			V->Add(0);
		return V;
	}

	template<class T>
	Vector<double>* Vector<T>::RandVector (int Length)
	{	
		Vector<double>* V = new Vector<double>(Length);
		for (int i=0; i<Length; i++)
			V->Add(static_cast<double>(rand())/static_cast<double>(RAND_MAX ));
			
		return V;
	}

	template<class T>
	Vector<T>* Vector<T>::GetSequence(T Start, T Step, T End)
	{
		Vector<T>* V = new Vector<T>();
		if (Start<End) {
			for (T i=Start; i<=End; i+=Step) {
				V->Add(i);
			}
		}
		else {
			for (T i=Start; i>=End; i-=Step) {
				V->Add(i);
			}
		}
		return V;
	}


	// Mathematical Operations
	template<class T>
	void Vector<T>::SumScalar (T X)
	{
		for (int i=0; i<this->GetLength(); i++) {
			this->Values[i] += X;
		}
	}

	template<class T>
	void Vector<T>::ProductScalar (T X)
	{
		for (int i=0; i<this->GetLength(); i++) {
			this->Values[i] *= X;
		}
	}

	template<class T>
	void Vector<T>::DivideScalar (T X)
	{
		if (X != 0) {
			for (int i=0; i<this->GetLength(); i++) {
				this->Values[i] /= X;
			}
		} 
		else {
			for (int i=0; i<this->GetLength(); i++) {
				this->Values[i] = SIGN(this->Values[i]) * INF;
			}		
		}
	}

	template<class T>
	void Vector<T>::PowScalar (T X)
	{
		for (int i=0; i<this->GetLength(); i++) {
			this->Values[i] = pow(this->Values[i], X);
		}
	}

	template<class T>
	void Vector<T>::SumVector (Vector<T>* V)
	{
		if (this->GetLength() == V->GetLength()) {
			for (int i=0; i<this->GetLength(); i++) {
				this->Values[i] += V->Values[i];
			}
		}
		else {
			cerr << "Error! It's impossible to sum two vectors with different length." << endl;
		}
	}

	template<class T>
	Vector<T>* Vector<T>::SumVector (Vector<T>* V1, Vector<T>* V2) {
		if (V1->GetLength() == V2->GetLength()) {
			Vector *V3 = new Vector(V1->Values, V1->GetLength());
			for (int i=0; i<V1->GetLength(); i++) {
				V3->Values[i] += V2->Values[i];
			}
			return V3;
		}
		else {
			cerr << "Error! It's impossible to sum two vectors with different length." << endl;
			return new Vector<T>();
		}
	}

	template<class T>
	void Vector<T>::SubtractVector (Vector<T>* V)
	{
		if (this->GetLength() == V->GetLength()) {
			for (int i=0; i<this->GetLength(); i++) {
				this->Values[i] -= V->Values[i];
			}
		}
		else {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女尤物国产一区| 97精品久久久久中文字幕| 成人中文字幕电影| 欧美久久久久久蜜桃| 国产精品久久久久久一区二区三区| 石原莉奈在线亚洲三区| 99免费精品在线| 亚洲精品在线观看网站| 一级做a爱片久久| 成人高清视频在线观看| 久久久久久久av麻豆果冻| 日韩在线一区二区三区| 欧美亚洲日本国产| 亚洲精品国产精品乱码不99| 丁香另类激情小说| 亚洲影视资源网| 成人激情视频网站| 欧美激情在线看| 韩国中文字幕2020精品| 日韩欧美综合在线| 免费在线成人网| 欧美精品日日鲁夜夜添| 亚洲电影一区二区| 91国偷自产一区二区使用方法| 国产精品久久久久永久免费观看| 国产一区二区毛片| 国产偷国产偷精品高清尤物| 精品一区二区三区香蕉蜜桃| 91 com成人网| 美女视频一区在线观看| 日韩片之四级片| 国产一区二区在线看| 欧美精品一区二区三区蜜桃视频| 免费精品视频在线| 精品国产乱码久久久久久夜甘婷婷| 日韩国产欧美在线播放| 日韩三级av在线播放| 国精品**一区二区三区在线蜜桃| 久久色成人在线| 国产福利精品一区二区| 亚洲欧洲99久久| 色综合天天综合狠狠| 亚洲一区av在线| 欧美一区二区三区日韩视频| 久久国产精品露脸对白| 日本一区二区动态图| 92精品国产成人观看免费| 亚洲福利一区二区三区| 欧美一区二区三区思思人| 韩国在线一区二区| 国产精品久久久久久久岛一牛影视 | 麻豆视频一区二区| 制服丝袜亚洲精品中文字幕| 久国产精品韩国三级视频| 久久精品一区二区| 粉嫩高潮美女一区二区三区| 亚洲人一二三区| 91精品国产91久久综合桃花| 国产美女一区二区三区| 一区二区在线免费观看| 精品日韩欧美在线| 91网址在线看| 麻豆精品一区二区| 亚洲色图清纯唯美| 欧美电影免费观看高清完整版在线观看| 国产一区在线精品| 亚洲精品久久久蜜桃| 日韩久久久久久| 91视频国产资源| 久久99精品久久久久| 综合久久给合久久狠狠狠97色| 欧美另类久久久品| 99天天综合性| 久久国产精品免费| 一级特黄大欧美久久久| 国产欧美视频一区二区| 欧美美女黄视频| 一本大道久久a久久精二百| 毛片不卡一区二区| 一区二区三区在线观看网站| 久久久久久麻豆| 欧美一区二区三区在线视频| 色综合夜色一区| 福利电影一区二区| 老司机精品视频一区二区三区| 亚洲精品综合在线| 中文字幕精品在线不卡| 精品国产麻豆免费人成网站| 欧美在线一二三四区| 成人高清视频在线观看| 国产一区二区三区精品视频| 三级在线观看一区二区| 亚洲综合图片区| 亚洲美女免费在线| 国产精品电影一区二区| 国产日韩欧美精品综合| 欧美大片一区二区| 欧美一级国产精品| 制服.丝袜.亚洲.中文.综合| 欧美在线|欧美| 色综合久久中文字幕综合网| 国产jizzjizz一区二区| 国产东北露脸精品视频| 国产一区二区三区黄视频 | 国产夫妻精品视频| 国产原创一区二区三区| 久久99精品国产麻豆婷婷| 免费看日韩精品| 麻豆精品在线播放| 久久99精品国产麻豆婷婷| 久久国产麻豆精品| 韩国成人在线视频| 国产乱码精品1区2区3区| 国产精品一区二区久久不卡| 国产精品一区久久久久| 国产精品亚洲一区二区三区妖精 | 亚洲第一电影网| 亚洲成人福利片| 日韩精品一卡二卡三卡四卡无卡| 视频一区二区欧美| 蜜臀久久99精品久久久久久9| 久久国产欧美日韩精品| 国产精品亚洲第一| 91无套直看片红桃| 欧美日韩高清影院| 日韩欧美国产一区二区在线播放 | 亚洲视频一区在线观看| 夜夜嗨av一区二区三区| 午夜视频一区在线观看| 麻豆91精品视频| 岛国一区二区三区| 色狠狠色狠狠综合| 日韩亚洲欧美在线| 中文字幕成人av| 亚洲第一搞黄网站| 久久99久久精品欧美| 成人免费电影视频| 欧美三级蜜桃2在线观看| 日韩一区二区三区视频| 国产欧美日韩激情| 亚洲国产精品一区二区久久| 久久av中文字幕片| 91色九色蝌蚪| 91麻豆精品国产91久久久久久久久| 欧美精品一区二区三区蜜桃| 亚洲日本欧美天堂| 激情欧美一区二区三区在线观看| www.66久久| 日韩视频不卡中文| 亚洲欧洲一区二区在线播放| 日本亚洲天堂网| 成人av在线一区二区三区| 制服.丝袜.亚洲.另类.中文| 国产精品国产三级国产aⅴ中文| 午夜精品免费在线| 成人一区二区三区视频在线观看 | 欧美性videosxxxxx| 日韩免费看的电影| 一区二区三区四区在线播放 | 免费成人av在线| 91在线精品一区二区| 日韩午夜三级在线| 亚洲综合免费观看高清完整版在线| 狠狠色丁香婷婷综合久久片| 欧美日韩综合色| 国产精品福利一区| 国产一区二区三区美女| 91精品国产一区二区三区蜜臀 | 精品制服美女丁香| 欧美中文字幕一区| 国产精品二三区| 国产毛片精品视频| 欧美一区二区美女| 五月激情六月综合| 欧美亚洲综合色| 亚洲素人一区二区| 国产.精品.日韩.另类.中文.在线.播放 | 在线观看日韩av先锋影音电影院| 91精品国产综合久久久久久漫画 | 热久久免费视频| 欧美三日本三级三级在线播放| 中文子幕无线码一区tr| 国产精品 日产精品 欧美精品| 在线播放国产精品二区一二区四区| 亚洲三级在线播放| 99视频在线精品| 综合欧美一区二区三区| 成人av在线网站| 国产片一区二区| 成人黄色电影在线| 国产精品你懂的在线欣赏| 国产精品亚洲视频| 欧美国产国产综合| 成人精品免费看| 国产精品剧情在线亚洲| 99re热这里只有精品视频| 国产精品人人做人人爽人人添| 国产91精品精华液一区二区三区 | 亚洲国产精品麻豆| 欧美三级电影网|