本文整理汇总了C++中PlotLine::append方法的典型用法代码示例。如果您正苦于以下问题:C++ PlotLine::append方法的具体用法?C++ PlotLine::append怎么用?C++ PlotLine::append使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PlotLine
的用法示例。
在下文中一共展示了PlotLine::append方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
PlotLine * IndicatorPlugin::getWilderMA (PlotLine *d, int period)
{
PlotLine *wilderma = new PlotLine;
if (period >= (int) d->getSize())
return wilderma;
if (period < 1)
return wilderma;
double t = 0;
int loop;
for (loop = 0; loop < period; loop++)
t = t + d->getData(loop);
double yesterday = t / period;
wilderma->append(yesterday);
for (; loop < (int) d->getSize(); loop++)
{
double t = (yesterday * (period - 1) + d->getData(loop))/period;
yesterday = t;
wilderma->append(t);
}
return wilderma;
}
示例2:
PlotLine * LOWPASS::raise2Power(PlotLine *x, double pad)
{
// Raise the caller's n up to the next power of two
// pad remainder with pad, default = 0;
PlotLine *result = new PlotLine;
int length = x->getSize();
int n = 0;
int i = 0;
for (n = 2 ; n < MAXNUM / 2 ; n *= 2)
{
if (n >= length)
break ;
}
for (i = 0; i < n; i++)
{
if (i < length)
result->append(x->getData(i));
else
result->append(pad); // pad with zero
}
return result;
}
示例3:
/* Modified/Relative Japanese Candlesticks */
PlotLine * BARS::calculateCandle ()
{
PlotLine *line = new PlotLine;
for (int loop = 0; loop < (int) data->count(); loop++)
{
double O = data->getOpen(loop);
double C = data->getClose(loop);
QColor color = barNeutralColor;
if (loop > 0)
{
if (C > data->getClose(loop - 1))
color = barUpColor;
if (C < data->getClose(loop - 1))
color = barDownColor;
}
bool fillFlag = C < O ? TRUE : FALSE;
line->append(color, O, data->getHigh(loop), data->getLow(loop), C, fillFlag);
QDateTime dt;
data->getDate(loop, dt);
line->append(dt);
}
line->setType(PlotLine::Candle);
line->setLabel(label);
return line;
}
示例4: switch
PlotLine * TALIB::getMA (PlotLine *in, int type, int period)
{
PlotLine *ma = new PlotLine;
TA_Real input[in->getSize()];
TA_Real out[in->getSize()];
TA_Integer outBeg;
TA_Integer count;
TA_RetCode rc = TA_SUCCESS;
int loop;
for (loop = 0; loop < in->getSize(); loop++)
input[loop] = (TA_Real) in->getData(loop);
switch (type)
{
case 0:
rc = TA_MA(0, in->getSize()- 1, &input[0], period, TA_MAType_SMA, &outBeg, &count, &out[0]);
break;
case 1:
rc = TA_MA(0, in->getSize()- 1, &input[0], period, TA_MAType_EMA, &outBeg, &count, &out[0]);
break;
case 2:
rc = TA_MA(0, in->getSize()- 1, &input[0], period, TA_MAType_WMA, &outBeg, &count, &out[0]);
break;
case 3:
rc = TA_MA(0, in->getSize()- 1, &input[0], period, TA_MAType_DEMA, &outBeg, &count, &out[0]);
break;
case 4:
rc = TA_MA(0, in->getSize()- 1, &input[0], period, TA_MAType_TEMA, &outBeg, &count, &out[0]);
break;
case 5:
rc = TA_MA(0, in->getSize()- 1, &input[0], period, TA_MAType_TRIMA, &outBeg, &count, &out[0]);
break;
case 6:
rc = TA_MA(0, in->getSize()- 1, &input[0], period, TA_MAType_KAMA, &outBeg, &count, &out[0]);
break;
case 7:
rc = TA_MA(0, in->getSize()- 1, &input[0], period, TA_MAType_MAMA, &outBeg, &count, &out[0]);
break;
case 8:
rc = TA_MA(0, in->getSize()- 1, &input[0], period, TA_MAType_T3, &outBeg, &count, &out[0]);
break;
default:
break;
}
if (rc != TA_SUCCESS)
{
qDebug("TALIB::getMA:error on TALIB function call");
return ma;
}
for (loop = 0; loop < count; loop++)
ma->append((double) out[loop]);
return ma;
}
示例5:
PlotLine *qtsFFT::do_iFFTqts(PlotLine *f)
{
PlotLine * result = new PlotLine;
int i = 0;
for (i = 0; i < length; i++)
{
fftFreq[i] = f->getData(i);
}
_ftt_Real.do_ifft(fftFreq, fftReal);
_ftt_Real.rescale(fftReal);
for (i = 0; i < length; i++)
{
result->append(fftReal[i]);
}
return result;
}
示例6: getPFSettings
/* Pont and Figure */
PlotLine * BARS::calculatePF ()
{
PlotLine *line = new PlotLine;
// determine start either x or o
if (data->count() < 2)
return line;
getPFSettings();
bool XOFlag = FALSE;
if (data->getHigh(1) > data->getHigh(0))
XOFlag = TRUE; // prices rising, we start with x's
double high = 0;
double d = data->getHigh(0) / pfBoxSize;
int t = (int) d;
if (t * pfBoxSize <= data->getHigh(0))
high = (t + 1) * pfBoxSize;
else
high = t * pfBoxSize;
double low = 0;
t = (int) (data->getLow(0) / pfBoxSize);
low = t * pfBoxSize;
int loop;
for (loop = 1; loop < (int) data->count(); loop++)
{
if (XOFlag)
{
if (data->getHigh(loop) > high)
{
// new high
d = data->getHigh(loop) / pfBoxSize;
t = (int) d;
if (t * pfBoxSize <= data->getHigh(loop))
high = (t + 1) * pfBoxSize;
else
high = t * pfBoxSize;
}
double reversal = high - (pfBoxSize * pfReversal);
if (data->getLow(loop) < reversal)
{
// reversal to O's
line->append(pfXColor, pfBoxSize, high, low, low, XOFlag);
high = high - pfBoxSize; // lower high 1 box
t = (int) (data->getLow(loop) / pfBoxSize);
low = t * pfBoxSize;
XOFlag = FALSE;
}
}
else
{
if (data->getLow(loop) < low)
{
// new low
t = (int) (data->getLow(loop) / pfBoxSize);
low = t * pfBoxSize;
}
double reversal = low + (pfBoxSize * pfReversal);
if (data->getHigh(loop) > reversal)
{
// reversal to X's
line->append(pfOColor, pfBoxSize, high, low, low, XOFlag);
low = low + pfBoxSize; // raise low 1 box
d = data->getHigh(loop) / pfBoxSize;
t = (int) d;
if (t * pfBoxSize <= data->getHigh(loop))
high = (t + 1) * pfBoxSize;
else
high = t * pfBoxSize;
XOFlag = TRUE;
}
}
}
if (XOFlag)
line->append(pfXColor, pfBoxSize, high, low, low, XOFlag);
else
line->append(pfOColor, pfBoxSize, high, low, low, XOFlag);
line->setType(PlotLine::PF);
line->setLabel(label);
return line;
}
示例7: qDebug
//.........这里部分代码省略.........
qDebug("TALIB::calculateCustom:cannot set output1");
return 0;
}
}
break;
case 1:
retCode = TA_SetOutputParamRealPtr(parmHolder, loop, &out2[0]);
if (retCode != TA_SUCCESS)
{
qDebug("TALIB::calculateCustom:cannot set output2");
return 0;
}
break;
case 2:
retCode = TA_SetOutputParamRealPtr(parmHolder, loop, &out3[0]);
if (retCode != TA_SUCCESS)
{
qDebug("TALIB::calculateCustom:cannot set output3");
return 0;
}
break;
default:
break;
}
}
// call the function
/*
TA_Integer start = 0;
TA_Integer end = data->count() - 1;
if (d.count())
end = d.at(0)->getSize() - 1;
TA_Integer outstart;
TA_Integer count;
PlotLine *line = new PlotLine;
*/
retCode = TA_CallFunc(parmHolder, start, end, &outstart, &count);
if (retCode != TA_SUCCESS)
{
printError(QString("TALIB::calculateCustom:TA_CallFunc"), retCode);
qDebug("p=%s start=%d end=%d",p.ascii(), start, end);
}
else
{
// create the plotlines
int loop2;
retCode = TA_GetOutputParameterInfo(handle, 0, &outInfo);
if (retCode != TA_SUCCESS)
{
qDebug("TALIB::calculateCustom:cannot get output info");
return 0;
}
if (outInfo->type == TA_Output_Integer)
{
for (loop2 = 0; loop2 < count; loop2++)
line->append((double) out4[loop2]);
}
else
{
if (theInfo->nbOutput > 1)
{
bool ok;
l[l.count() - 1].toInt(&ok);
if (! ok)
{
qDebug("TALIB::calculateCustom: parm #%i invalid, not an INTEGER", loop + 1);
return 0;
}
switch (l[l.count() - 1].toInt(&ok))
{
case 2:
for (loop2 = 0; loop2 < count; loop2++)
line->append((double) out2[loop2]);
break;
case 3:
for (loop2 = 0; loop2 < count; loop2++)
line->append((double) out3[loop2]);
break;
default:
for (loop2 = 0; loop2 < count; loop2++)
line->append((double) out1[loop2]);
break;
}
}
else
{
for (loop2 = 0; loop2 < count; loop2++)
line->append((double) out1[loop2]);
}
}
}
retCode = TA_ParamHolderFree(parmHolder);
if (retCode != TA_SUCCESS)
qDebug("TALIB::calculateCustom:can't delete parm holder");
return line;
}
示例8: color
//.........这里部分代码省略.........
retCode = TA_SetOutputParamRealPtr(parmHolder, loop, &out2[0]);
if (retCode != TA_SUCCESS)
qDebug("TALIB::calculate:cannot set output2");
break;
case 2:
retCode = TA_SetOutputParamRealPtr(parmHolder, loop, &out3[0]);
if (retCode != TA_SUCCESS)
qDebug("TALIB::calculate:cannot set output3");
break;
default:
break;
}
}
// call the function
TA_Integer start = 0;
TA_Integer end = data->count() - 1;
TA_Integer outstart;
TA_Integer count;
retCode = TA_CallFunc(parmHolder, start, end, &outstart, &count);
if (retCode != TA_SUCCESS)
qDebug("TALIB::calculate:call function failed");
else
{
// create the plotlines
const TA_OutputParameterInfo *outInfo;
for (loop = 0; loop < (int) theInfo->nbOutput; loop++ )
{
TA_GetOutputParameterInfo(theInfo->handle, loop, &outInfo);
QString base = outInfo->paramName;
base = base.right(base.length() - 3);
if (! base.left(4).compare("Real"))
base = base.right(base.length() - 4);
if (! base.left(7).compare("Integer"))
base = base.right(base.length() - 7);
if (! base.length())
base = QObject::tr("Plot");
PlotLine *line = new PlotLine;
QString s = base + " " + QObject::tr("Color");
parms.getData(s, ts);
QColor color(ts);
line->setColor(color);
s = base + " " + QObject::tr("Label");
parms.getData(s, ts);
line->setLabel(ts);
s = base + " " + QObject::tr("Line Type");
line->setType((PlotLine::LineType)parms.getInt(s));
retCode = TA_GetOutputParameterInfo(handle, loop, &outInfo);
if (retCode != TA_SUCCESS)
{
qDebug("TALIB::calculate:cannot get output info");
delete line;
continue;
}
int loop2;
switch (loop)
{
case 0:
if (outInfo->type == TA_Output_Integer)
{
for (loop2 = 0; loop2 < count; loop2++)
line->append((double) out4[loop2]);
}
else
{
for (loop2 = 0; loop2 < count; loop2++)
line->append((double) out1[loop2]);
}
break;
case 1:
for (loop2 = 0; loop2 < count; loop2++)
line->append((double) out2[loop2]);
break;
case 2:
for (loop2 = 0; loop2 < count; loop2++)
line->append((double) out3[loop2]);
break;
default:
break;
}
if (line->getType() == PlotLine::Histogram || line->getType() == PlotLine::HistogramBar)
output->prependLine(line);
else
output->addLine(line);
}
}
retCode = TA_ParamHolderFree(parmHolder);
if (retCode != TA_SUCCESS)
qDebug("TALIB::calculate:can't delete parm holder");
return output;
}
示例9: ba
PlotLine * ExScript::doScript ()
{
if (proc)
{
delete proc;
proc = 0;
}
PlotLine *line = new PlotLine();
if (! scriptPath.length())
{
qDebug("ExScript::calculate: no script path");
return line;
}
proc = new QProcess(this);
connect(proc, SIGNAL(readyReadStdout()), this, SLOT(readFromStdout()));
proc->setCommunication(QProcess::Stdin|QProcess::Stdout|QProcess::Stderr);
proc->addArgument(scriptPath);
QStringList l = QStringList::split(" ", comlineParms, FALSE);
int loop;
for (loop = 0; loop < (int) l.count(); loop++)
proc->addArgument(l[loop]);
buffer.truncate(0);
QString s;
if (dateFlag || openFlag || highFlag || lowFlag || closeFlag || volumeFlag || oiFlag)
getInput(s);
QByteArray ba(s.length());
if (s.length())
{
for (loop = 0; loop < (int) s.length(); loop++)
ba[loop] = s.at(loop).latin1();
}
if (! proc->launch(ba, NULL))
{
qDebug("ExScript::calculate: error starting script");
delete proc;
proc = 0;
return line;
}
timer->start(seconds * 1000, FALSE);
wakeup();
while (proc->isRunning())
{
usleep(100);
wakeup();
}
timer->stop();
if (proc)
{
delete proc;
proc = 0;
}
if (! buffer.length())
{
qDebug("ExScript::createOutput: output buffer empty");
return line;
}
l = QStringList::split(",", buffer, FALSE);
for (loop = 0; loop < (int) l.count(); loop++)
line->append(l[loop].toDouble());
line->setColor(color);
line->setType(lineType);
line->setLabel(label);
return line;
}
示例10: PlotLine
PlotLine * SYMBOL::getSYMBOL ()
{
QString s;
Config config;
config.getData(Config::IndexPath, s);
DBIndex index;
index.open(s);
PlotLine *line = new PlotLine();
DbPlugin db;
if (db.open(symbol, &index))
{
db.close();
index.close();
return line;
}
QDateTime date;
data->getDate(0, date);
QString ts;
config.getData(Config::BarLength, ts);
db.setBarLength((BarData::BarLength) ts.toInt());
config.getData(Config::Bars, ts);
db.setBarRange(ts.toInt());
BarData *recordList = new BarData(symbol);
QDateTime dt = QDateTime::currentDateTime();
db.getHistory(recordList, dt);
QDict<Setting> dict;
dict.setAutoDelete(TRUE);
int loop;
ts = "Close";
QString ts2;
for (loop = 0; loop < (int) recordList->count(); loop++)
{
Setting *r = new Setting;
ts2 = QString::number(recordList->getClose(loop));
r->setData(ts, ts2);
recordList->getDate(loop, dt);
QString s = dt.toString("yyyyMMddhhmmss");
dict.insert(s, r);
}
double val = 0;
for (loop = 0; loop < (int) data->count(); loop++)
{
data->getDate(loop, dt);
QString s = dt.toString("yyyyMMddhhmmss");
Setting *r2 = dict[s];
if (r2)
{
val = r2->getDouble(ts);
line->append(val);
}
}
delete recordList;
db.close();
index.close();
line->setScaleFlag(TRUE);
return line;
}
示例11: detrend
PlotLine * LOWPASS::getLowpass (PlotLine *in, double fre, double wid)
{
PlotLine *out = new PlotLine;
if (in->getSize() == 0)
return out;
// ----------------------------------------------------------------------
double slope = 0; // will be modified on call to detrend
double intercept = 0;
int length = 0; // original caller size
int n = 0; // size raised to next power of 2 for fft
int i = 0;
length = in->getSize();
// Detrend input series
PlotLine *series = detrend(in, slope, intercept, true);
// Raise length to next power of 2, pad with zero
PlotLine *series2 = raise2Power(series, 0);
n = series2->getSize();
//qtsFFT fft(n); // construct fft object
fft = new qtsFFT(n);
// do fft
PlotLine * fftFreq = fft->do_FFTqts(series2);
//PlotLine * fftFreq = fft.do_FFTqts(series2);
// apply low pass filter
double f = 0;
double dist = 0;
double wt = 0;
int halfn = n/2;
double freqSave = fftFreq->getData(halfn);
for (i = 0 ; i < halfn ; i++)
{
f = (double) i / (double) n ; // Frequency
if (f <= fre) // Flat response
wt = 1.0 ;
else
{
dist = (f - fre) / wid;
wt = exp ( -dist * dist ) ;
}
fftFreq->setData(i, fftFreq->getData(i) * wt) ;
fftFreq->setData(halfn + i, fftFreq->getData(halfn + i) * wt) ;
}
dist = (0.5 - fre) / wid; // Do Nyquist in fftFreq[0]
fftFreq->setData(halfn, freqSave * exp ( -dist * dist )) ;
// Do inverse FFT to recover real domain
PlotLine *fftReal = fft->do_iFFTqts(fftFreq);
//PlotLine *fftReal = fft.do_iFFTqts(fftFreq);
// Retrend input series, n.b. original length
PlotLine *series3 = detrend(fftReal, slope, intercept, false);
for (i = 0; i < length; i++)
out->append(series3->getData(i));
delete series;
delete series2;
delete series3;
delete fftReal;
delete fftFreq;
delete fft;
return out;
}
示例12: getTHERM
void THERM::getTHERM (QPtrList<PlotLine> &pll)
{
PlotLine *therm = new PlotLine();
int loop;
double thermometer = 0;
for (loop = 1; loop < (int) data->count(); loop++)
{
double high = fabs(data->getHigh(loop) - data->getHigh(loop - 1));
double lo = fabs(data->getLow(loop - 1) - data->getLow(loop));
if (high > lo)
thermometer = high;
else
thermometer = lo;
therm->append(thermometer);
}
if (smoothing > 1)
{
PlotLine *ma = getMA(therm, smoothType, smoothing);
pll.append(ma);
delete therm;
therm = ma;
}
else
pll.append(therm);
PlotLine *therm_ma = getMA(therm, maType, maPeriod);
therm_ma->setColor(maColor);
therm_ma->setType(maLineType);
therm_ma->setLabel(maLabel);
pll.append(therm_ma);
// assign the therm colors
therm->setColorFlag(TRUE);
therm->setType(lineType);
therm->setLabel(label);
int thermLoop = therm->getSize() - 1;
int maLoop = therm_ma->getSize() - 1;
while (thermLoop > -1)
{
if (maLoop > -1)
{
double thrm = therm->getData(thermLoop);
double thrmma = therm_ma->getData(maLoop);
if (thrm > (thrmma * threshold))
therm->setColorBar(thermLoop, threshColor);
else
{
if (thrm > thrmma)
therm->setColorBar(thermLoop, upColor);
else
therm->setColorBar(thermLoop, downColor);
}
}
else
therm->setColorBar(thermLoop, downColor);
thermLoop--;
maLoop--;
}
}
示例13: getPP
void PP::getPP (QPtrList<PlotLine> &pll)
{
double high = data->getHigh(data->count() - 1);
double low = data->getLow(data->count() - 1);
double close = data->getClose(data->count() - 1);
PlotLine *fr = new PlotLine();
fr->setColor(resColor);
fr->setType(resLineType);
fr->setLabel(resLabel);
double pp = (high + low + close) / 3;
double t = (2 * pp) - low;
fr->append(t);
PlotLine *sr = new PlotLine();
sr->setColor(resColor);
sr->setType(resLineType);
sr->setLabel(resLabel2);
pp = (high + low + close) / 3;
t = pp + (high - low);
sr->append(t);
PlotLine *thr = new PlotLine();
thr->setColor(resColor);
thr->setType(resLineType);
thr->setLabel(resLabel3);
pp = (high + low + close) / 3;
t = (2 * pp) + (high - (2 * low));
thr->append(t);
PlotLine *fs = new PlotLine();
fs->setColor(supColor);
fs->setType(supLineType);
fs->setLabel(supLabel);
pp = (high + low + close) / 3;
t = (2 * pp) - high;
fs->append(t);
PlotLine *ss = new PlotLine();
ss->setColor(supColor);
ss->setType(supLineType);
ss->setLabel(supLabel2);
pp = (high + low + close) / 3;
t = pp - (high - low);
ss->append(t);
PlotLine *ts = new PlotLine();
ts->setColor(supColor);
ts->setType(supLineType);
ts->setLabel(supLabel3);
pp = (high + low + close) / 3;
t = (2 * pp) - ((2 * high) - low);
ts->append(t);
pll.append(fr);
pll.append(sr);
pll.append(thr);
pll.append(fs);
pll.append(ss);
pll.append(ts);
}
示例14: getSINWAV
void SINWAV::getSINWAV (Q3PtrList<PlotLine> &pll)
{
// Ehler's sine wave
PlotLine *Price = new PlotLine;
int i = 0;
// price = (h + l) / 2
for (i = 0; i < (int) data->count(); i++)
Price->append((data->getHigh(i) + data->getLow(i)) / 2);
//! VERSION 2
QVector<double> *smooth = new QVector<double>(Price->getSize());
smooth->fill(0.0);
QVector<double> *detrender = new QVector<double>(Price->getSize());
detrender->fill(0.0);
QVector<double> *period = new QVector<double>(Price->getSize());
period->fill(0.0);
QVector<double> *Q1 = new QVector<double>(Price->getSize());
Q1->fill(0.0);
QVector<double> *I1 = new QVector<double>(Price->getSize());
I1->fill(0.0);
QVector<double> *jI = new QVector<double>(Price->getSize());
jI->fill(0.0);
QVector<double> *jQ = new QVector<double>(Price->getSize());
jQ->fill(0.0);
QVector<double> *I2 = new QVector<double>(Price->getSize());
I2->fill(0.0);
QVector<double> *Q2 = new QVector<double>(Price->getSize());
Q2->fill(0.0);
QVector<double> *Re = new QVector<double>(Price->getSize());
Re->fill(0.0);
QVector<double> *Im = new QVector<double>(Price->getSize());
Im->fill(0.0);
QVector<double> *SmoothPrice = new QVector<double>(Price->getSize());
SmoothPrice->fill(0.0);
QVector<double> *DCPhase = new QVector<double>(Price->getSize());
DCPhase->fill(0.0);
PlotLine *out1 = new PlotLine;
PlotLine *out2 = new PlotLine;
double SmoothPeriod = 0;
double DCPeriod = 0;
for (i = 6; i< Price->getSize(); i++)
{
// Weighted price
(*smooth)[i] = ( 4 * Price->getData(i) + 3 * Price->getData(i-1) +
2 * Price->getData(i-2) + Price->getData(i-3)) /10.0;
(*detrender)[i] = (0.0962 * smooth->at(i) + 0.5769 * smooth->at(i-2) -
0.5769 * smooth->at(i-4) - 0.0962 * smooth->at(i-6)) *
(0.075 * period->at(i-1) + 0.54);
// Compute InPhase and Quadrature components
(*Q1)[i] = (0.0962 * detrender->at(i) + 0.5769 * detrender->at(i-2) -
0.5769 * detrender->at(i-4) - 0.0962 * detrender->at(i-6)) *
(0.075 * period->at(i-1) + 0.54);
(*I1)[i] = detrender->at(i-3);
//Advance the phase of I1 and Q1 by 90 degrees
(*jI)[i] = (0.0962 * I1->at(i) + 0.5769 * I1->at(i-2) -
0.5769 * I1->at(i-4) - 0.0962 * I1->at(i-6)) *
(0.075 * period->at(i-1) + 0.54);
(*Q1)[i] = (0.0962 * Q1->at(i) + 0.5769 * Q1->at(i-2) -
0.5769 * Q1->at(i-4) - 0.0962 * Q1->at(i-6)) *
(0.075 * period->at(i-1) + 0.54);
// Phasor addition for 3-bar averaging
(*I2)[i] = I1->at(i) - jQ->at(i);
(*Q2)[i] = Q1->at(i) + jI->at(i);
// Smooth the I and Q components before applying the discriminator
(*I2)[i] = 0.2 * I2->at(i) + 0.8 * I2->at(i-1);
(*Q2)[i] = 0.2 * Q2->at(i) + 0.8 * Q2->at(i-1);
// Homodyne Discriminator
(*Re)[i] = I2->at(i) * I2->at(i-1) + Q2->at(i) * Q2->at(i-1);
(*Im)[i] = I2->at(i) * Q2->at(i-1) - Q2->at(i) * I2->at(i-1);
(*Re)[i] = 0.2 * Re->at(i) + 0.8 * Re->at(i-1);
(*Im)[i] = 0.2 * Im->at(i) + 0.8 * Im->at(i-1);
if (Im->at(i) != 0 && Re->at(i) != 0 )
(*period)[i] = 360/(atan(Im->at(i) / Re->at(i)) * (180/PI));
if (period->at(i) > 1.5 * period->at(i-1))
(*period)[i] = 1.5 * period->at(i-1);
if (period->at(i) < 0.67 * period->at(i-1))
(*period)[i] = 0.67 * period->at(i-1);
if (period->at(i) < 6)
(*period)[i] = 6;
if (period->at(i) > 50)
(*period)[i] = 50;
(*period)[i] = 0.2 * period->at(i) + 0.8 * period->at(i-1);
SmoothPeriod = 0.33 * period->at(i) + 0.67 * SmoothPeriod;
//.........这里部分代码省略.........