2017-01-12 10 views
0

Использование источников в Интернете Мне удалось провести график 4 графиков значений датчиков с течением времени, однако я хочу использовать значения от датчиков для построения живого графика 5-го участка, используя значения из предыдущие сюжеты. Переменная sampleVector представляет собой двумерную матрицу, содержащую сенсорные значения (переменная Y) со временем (X-переменная)Доступ к данным в 2D QVector с использованием Qt

Формула для 5-го участка: Plot5 = -0,5 * (Plot0 + Plot1) ... по всему образцы

Ниже приводится моя попытка достичь этого, однако это не сработало. Пятый сюжет, казалось, закладывался в два раза быстрее, чем в два раза больше, чем у х-значений. Мне также не понравилось, что я умножаю значение, такое как «-0,5». Я новичок в Qt, и я не нашел способ манипулировать и использовать Y-значения «sampleVector». Я не совсем понимаю формат переменной, если это можно объяснить, пожалуйста.

Спасибо заранее

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) 
    } 

} 

ответ

0

Вы манипулируете QPointF, которая ведет себя как математическую точку. Так что, когда вы делаете

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

Вы создаете новую точку с:

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

Но из вашего вопроса, я думаю, что вы хотите:

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

Что может быть написано (если значения x одинаковы):

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

 Смежные вопросы

  • Нет связанных вопросов^_^