Brief description of class still missing. More...
#include <SignalReader.h>
Public Member Functions | |
void | exec () |
bool | setOptions (int &argc, char **argv) |
SignalReader () | |
~SignalReader () | |
Protected Member Functions | |
virtual bool | parse (QTextStream &s) |
Brief description of class still missing.
Full description of class still missing
Description of constructor still missing
References TRACE.
: ArgumentStdinReader() { TRACE; _nSamples=0; _samples=0; //_commonFrequency=-1.0; _deltaT=0.01; _timeLength=600.0; // 10 minutes //_uniqueFrequency=true; _square=false; }
void SignalReader::exec | ( | ) |
References Wavelet::amplitude, QGpCoreTools::cos(), QGpCoreTools::flush(), Wavelet::frequency, Wavelet::phase, and sOut().
Referenced by main().
{ int nWavelets=_wavelets.count(); double t; if(_square) { for(int i=0;i<_nSamples;i++) { _samples[i]=0.0; t=(double)i*_deltaT; for(int iw=0; iw<nWavelets; iw++) { Wavelet& w=_wavelets[iw]; double a=w.amplitude*cos(2.0*M_PI*w.frequency*t-w.phase); if(a<=0.0) { a=0.0; } else { a=1.0; } _samples[i]+=a; } } } else { for(int i=0;i<_nSamples;i++) { _samples[i]=0.0; t=(double)i*_deltaT; for(int iw=0; iw<nWavelets; iw++) { Wavelet& w=_wavelets[iw]; _samples[i]+=w.amplitude*cos(2.0*M_PI*w.frequency*t-w.phase); } } } QTextStream sOut(stdout); for(int i=0;i<_nSamples;i++) sOut << _samples[i] << "\n"; sOut << flush; }
bool SignalReader::parse | ( | QTextStream & | s | ) | [protected, virtual] |
Implements QGpCoreTools::ArgumentStdinReader.
References QGpCoreTools::Point2D::azimuthTo(), QGpCoreTools::cos(), QGpCoreTools::Point::distanceTo(), and TRACE.
{ TRACE; QString buf; buf=s.readLine(); if(!buf.isEmpty() && buf[0]!='\n' && buf[0]!='#') { bool ok; if(_velocities.isEmpty()) { ok=addWavelet(buf, 0.0); } else { int n=_velocities.count(); for(int i=0; i<n; i++) { // Math angle for station position relative to origin double angle=Point(0,0).azimuthTo(_stationCoord); angle-=Angle::geographicToMath(_azimuths.at(i)); double propagationDelay=Point(0,0).distanceTo(_stationCoord)*cos(angle)/_velocities.at(i); ok=addWavelet(buf, propagationDelay); } } return ok; } return true; }
bool SignalReader::setOptions | ( | int & | argc, |
char ** | argv | ||
) |
References QGpCoreTools::endl(), QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), QGpCoreTools::tr(), and TRACE.
Referenced by main().
{ TRACE; // Check arguments int i, j=1; for(i=1; i<argc; i++) { QByteArray arg=argv[i]; if(arg[0]=='-') { if(arg=="-f") { CoreApplication::checkOptionArg(i, argc, argv); _deltaT=1.0/atof(argv[i] ); } else if(arg=="-t") { CoreApplication::checkOptionArg(i, argc, argv); _timeLength=atof(argv[i] ); } else if(arg=="-x") { CoreApplication::checkOptionArg(i, argc, argv); _stationCoord.setX(atof( argv[i] )); } else if(arg=="-y") { CoreApplication::checkOptionArg(i, argc, argv); _stationCoord.setY( atof(argv[i] )); } else if(arg=="-a") { CoreApplication::checkOptionArg(i, argc, argv); _azimuths.append(atof(argv[i])); } else if(arg=="-v") { CoreApplication::checkOptionArg(i, argc, argv); _velocities.append(atof(argv[i])); } else if(arg=="-square") { _square=true; } else { App::stream() << tr("gpsignal: bad option %1, see -help").arg(argv[i]) << endl; return false; } } else { argv[j++]=argv[i]; } } if(j < argc) { argv[j]=0; argc=j; } if(_velocities.count()!=_azimuths.count()) { App::stream() << tr("gpsignal: number of -v and -a options must be the same.") << endl; return false; } _nSamples=(int) floor(_timeLength/_deltaT +0.5); _samples=new double [_nSamples]; return true; }