码迷,mamicode.com
首页 > 编程语言 > 详细

C++实现MATLAB一维数组函数findpeaks()函数求一维离散值极值(波峰波谷)

时间:2015-04-10 09:43:41      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:matlab   极值   


一、代码

#include <iostream>
#include <vector>
using namespace std;

//
//C++实现求一维离散数据极值(波峰、波谷)
//
//参数:数组,数组大小
void findPeaks(int *num,int count)
{
	vector<int> sign;
	for(int i = 1;i<count;i++)
	{
		/*相邻值做差:
		 *小于0,赋-1
		 *大于0,赋1
		 *等于0,赋0
		 */
		int diff = num[i] - num[i-1];
		if(diff>0)
		{
			sign.push_back(1);
		}
		else if(diff<0)
		{
			sign.push_back(-1);
		}
		else
		{
			sign.push_back(0);
		}
	}
	//再对sign相邻位做差
	//保存极大值和极小值的位置
	vector<int> indMax;
	vector<int> indMin;

	for(int j = 1;j<sign.size();j++)
	{
		int diff = sign[j]-sign[j-1];
		if(diff<0)
		{
			indMax.push_back(j);
		}
		else if(diff>0)
		{
			indMin.push_back(j);
		}
	}
	cout<<"极大值为:"<<endl;
	for(int m = 0;m<indMax.size();m++)
	{
		cout<<num[indMax[m]]<<"  ";
	}
	cout<<endl;
	cout<<"极小值为:"<<endl;
	for(int n = 0;n<indMin.size();n++)
	{
		cout<<num[indMin[n]]<<"  ";
	}
}

int main()
{
	int a[] = {1,2,10,2,4,1,8,10,23,0};
	findPeaks(a,10);
	return 0;
}

二、运行结果:

技术分享

三、用MATLAB验证结果

技术分享

技术分享

C++实现MATLAB一维数组函数findpeaks()函数求一维离散值极值(波峰波谷)

标签:matlab   极值   

原文地址:http://blog.csdn.net/chentravelling/article/details/44966781

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!