3.9.5.6 Wavelets


Version Info

Minimum Origin Version Required: Origin 8 SR0

Continuous Wavelet Transformation (CWT)

This example shows how to access NAG continuous wavelet transformation routines to calculate the wavelet coefficients.

#include <oc_nag.h>
#include  <nag\OC_nag_ex.h>

void cwt_ex()
{ 
	// pick input data from worksheet for CWT calculation
	Worksheet wks = Project.ActiveLayer();
	if( !wks || wks.GetNumCols() < 2 )
	{
		printf("Please make sure a worksheet is active with two columns.\n");	
		return;
	}
		
	Dataset dsSignal(wks, 0);  // assume that the first column is signal data
	Dataset dsScale(wks, 1); // the second column is scale data
	
	int nSignal = dsSignal.GetSize();
	int nScale = dsScale.GetSize();
 
	// copy the data from columns to vectors
	vector vSignal(nSignal);
	vector<int> vnScale(nScale);
	vSignal = dsSignal; 
	vnScale = dsScale; 
 
	// prepare the parameters for NAG cwt routine
	// types of wavelet can be used:  Nag_Morlet, Nag_DGauss, Nag_MexHat
	Nag_WavType nagType = Nag_Morlet;  
	int nWavePara  = 5;
	static NagError fail; 
 
	matrix mat(nScale, nSignal);
	nag_cwt_real(nagType, nWavePara, nSignal, vSignal, nScale, vnScale, mat, &fail);
 
	if(fail.code != NE_NOERROR) //examine error if there is
	{
		printf("%s\n",fail.message);
	} 
 
	// prepare the output matrixbook for the matrix coefficient
	MatrixLayer ml;        
	ml.Create("Origin");  // create new matrix layer with default template named "Origin"
	
	// set the number of rows and columns and XY range for matrix window
	MatrixObject mo = ml.MatrixObjects(0);	
	mo.SetSize(nScale, nSignal);
	mo.SetXY(0, 0, nSignal - 1, nScale - 1);
	
	// copy result from mat variable to the matrix window
	matrix& matData = mo.GetDataObject();	
	matData = mat;        
}