2017-01-12 4 views
0

En utilisant les sources en ligne J'ai réussi à vivre les graphiques de valeurs de capteur dans le temps, mais je veux utiliser les valeurs des capteurs pour tracer un graphique en direct avec les valeurs de les parcelles précédentes. La variable sampleVector est un tableau 2D contenant des valeurs sensorielles (variable Y) au cours du temps (variable X)Accès aux données en 2D QVector en utilisant Qt

La formule pour le 5ème tracé est: Plot5 = -0.5 * (Plot0 + Plot1) ... dans l'ensemble les échantillons

Ci-dessous est ma tentative d'atteindre cela, mais cela n'a pas fonctionné. La 5ème intrigue semblait comploter deux fois plus vite que si elle ajoutait deux fois plus de valeurs x. Il ne m'a pas non plus plu de multiplier une valeur telle que "-0.5". Je suis nouveau à Qt et je n'ai pas trouvé un moyen de manipuler et d'utiliser les valeurs Y de "sampleVector". Je ne comprends pas très bien le format de la variable si cela peut aussi être expliqué s'il vous plaît.

Nous vous remercions à l'avance

void Plot::plotSampleVector(QVector<QVector<QPointF> > sampleVector){ 

//*** length of the data 
const int sampleSize = sampleVector.length(); 

//***Append new values to "QVector<Plot *> d_plots" 
for (int ii=0; ii< sampleSize; i++){ 

    d_plots[0] -> AppendPoint(sampleVector.at(ii).at(0)); 
    d_plots[1] -> AppendPoint(sampleVector.at(ii).at(1)); 
    d_plots[2] -> AppendPoint(sampleVector.at(ii).at(2)); 
    d_plots[3] -> AppendPoint(sampleVector.at(ii).at(3)); 
//***Problem Code: 
    d_plots[4] -> AppendPoint(-0.5 * (sampleVector.at(ii).at(0) + sampleVector.at(ii).at(1))); 

    } 

//***Draw Curves 
    for (int ii=0; ii<5; ii++){ 
    d_plots[ii] ->DrawCurveSegment(sampleSize) 
    } 

} 

Répondre

0

Vous manipulez QPointF qui se comporte comme un point mathématique. Alors, quand vous faites

-0.5 * (sampleVector.at(ii).at(0) + sampleVector.at(ii).at(1)) 

Vous créez un nouveau point avec:

x = -0.5 * (x_0 + x_1) 
y = -0.5 * (y_0 + y_1) 

Mais de votre question, je pense que ce que vous voulez est:

x = x_0 = x_1 
y = -0.5 * (y_0 + y_1) 

Ce qui pourrait être écrit (si les valeurs x sont les mêmes):

QPointF(sampleVector.at(ii).at(0).x(), -0.5 * (sampleVector.at(ii).at(0).y() + sampleVector.at(ii).at(1).y()))