<< Chapter < Page | Chapter >> Page > |
Listing 9. Dsp031a.java. |
---|
/* File Dsp031a.java
Copyright 2004, R.G.BaldwinRevised 5/17/2004
Displays sinusoidal pulses identical to thoseprocessed by Dsp031.
Creates and displays five separate time series,each 400 samples in length.
Each time series contains a pulse and the pulsesare different lengths.
Each pulse consists of a truncated sinusoid. Thefrequency of the sinusoid for all pulses is the
same.All frequency values are specified as type
double as a fraction of the sampling frequency.
The frequency of all sinusoids is 0.0625 timesthe sampling frequency.
The lengths of the pulses are:25 samples
50 samples100 samples
200 samples400 samples
Tested using J2SEE 1.4.2 under WinXP.************************************************/
import java.util.*;class Dsp031a implements GraphIntfc01{
final double pi = Math.PI;int len = 400;//data length
int numberPulses = 5;//Frequency of the sinusoids
double freq = 0.0625;//Amplitude of the sinusoids
double amp = 160;//Following arrays will contain sinusoidal data
double[]data1 = new double[len];double[] data2 = new double[len];
double[]data3 = new double[len];double[] data4 = new double[len];
double[]data5 = new double[len];public Dsp031a(){//constructor
//Create the raw datafor(int x = 0;x<len/16;x++){
data1[x]= amp*Math.cos(2*pi*x*freq);
}//end for loopfor(int x = 0;x<len/8;x++){
data2[x]= amp*Math.cos(2*pi*x*freq);
}//end for loopfor(int x = 0;x<len/4;x++){
data3[x]= amp*Math.cos(2*pi*x*freq);
}//end for loopfor(int x = 0;x<len/2;x++){
data4[x]= amp*Math.cos(2*pi*x*freq);
}//end for loopfor(int x = 0;x<len;x++){
data5[x]= amp*Math.cos(2*pi*x*freq);
}//end for loop}//end constructor
//-------------------------------------------////The following six methods are required by the
// interface named GraphIntfc01.public int getNmbr(){
//Return number of functions to process.// Must not exceed 5.
return 5;}//end getNmbr
//-------------------------------------------//public double f1(double x){
int index = (int)Math.round(x);if(index<0 || index>data1.length-1){
return 0;}else{
//Scale the amplitude of the pulses to make// them compatible with the default
// plotting amplitude of 100.0.return data1[index]*90.0/amp;}//end else
}//end function//-------------------------------------------//
public double f2(double x){int index = (int)Math.round(x);
if(index<0 || index>data2.length-1){
return 0;}else{
return data2[index]*90.0/amp;
}//end else}//end function
//-------------------------------------------//public double f3(double x){
int index = (int)Math.round(x);if(index<0 || index>data3.length-1){
return 0;}else{
return data3[index]*90.0/amp;
}//end else}//end function
//-------------------------------------------//public double f4(double x){
int index = (int)Math.round(x);if(index<0 || index>data4.length-1){
return 0;}else{
return data4[index]*90.0/amp;
}//end else}//end function
//-------------------------------------------//public double f5(double x){
int index = (int)Math.round(x);if(index<0 || index>data5.length-1){
return 0;}else{
return data5[index]*90.0/amp;
}//end else}//end function
}//end sample class Dsp031a |
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?