在QT中使用qcustomplot同时绘制14条波形

1.创建定时器,定时刷新数据

// 创建定时器
    QTimer *timer = new QTimer(this);
    // 启动定时器
//        timer->start(800);
//        connect(timer, &QTimer::timeout, this, &WAVEdisplay::sui);//波形定时器刷新函数

2.与定时器关联的槽函数

void WAVEdisplay::sui()
{

    QVector<double> newWaveVec(1280); // 创建一个包含10个元素的QVector<double>对象
    QVector<double> newWaveVec1(1280);
    QVector<double> newWaveVec2(1280);
    QVector<double> newWaveVec3(1280);
    QVector<double> newWaveVec4(1280);
    QVector<double> newWaveVec5(1280);
    QVector<double> newWaveVec6(1280);
    QVector<double> newWaveVec7(1280);
    QVector<double> newWaveVec8(1280);
    QVector<double> newWaveVec9(1280);
    QVector<double> newWaveVec10(1280);
    QVector<double> newWaveVec11(1280);
    QVector<double> newWaveVec12(1280);
    QVector<double> newWaveVec13(1280);
    QVector<double> newWaveVec14(1280);
//        QVector<double> newWaveVec[0]; // 创建一个包含10个元素的QVector<double>对象
    const int numSamples = 1280;
    const int numChannels = 16;
    const double frequency = 9.0; // 正弦波的频率
    const double amplitude = 13.0; // 正弦波的振幅
        // 给newWaveVec赋随机值
        for (int i = 0; i < newWaveVec.size(); ++i) {
            double value = amplitude * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value1 = 7 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value2 = 8 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value3 = 9 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value4 = 3 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value5 = 2 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value6 = 5 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value7 = 6 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value8 = 10 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value9 = 11 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value10 = 12 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value11 = 13 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value12 = 14 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));
            double value13 = 15 * sin(2 * M_PI * frequency * static_cast<double>(i) / static_cast<double>(numSamples));

            newWaveVec[i] = value; // 生成范围在0到100之间的随机数
            newWaveVec1[i]= value1;
            newWaveVec2[i] =value2;
            newWaveVec3[i]= value3;
            newWaveVec4[i] =value4;
            newWaveVec5[i]= value5;
            newWaveVec6[i]= value6;
            newWaveVec7[i] =value7;
            newWaveVec8[i]= value8;
            newWaveVec9[i] =value9;
            newWaveVec10[i]= value10;
            newWaveVec11[i]= value11;
            newWaveVec12[i] =value12;
            newWaveVec13[i]= value13;
        }


    EthernetCommunicate::waveVec[0]=newWaveVec;
    EthernetCommunicate::waveVec[1]=newWaveVec1;
    EthernetCommunicate::waveVec[2]=newWaveVec2;
    EthernetCommunicate::waveVec[3]=newWaveVec3;
    EthernetCommunicate::waveVec[4]=newWaveVec4;
    EthernetCommunicate::waveVec[5]=newWaveVec5;
    EthernetCommunicate::waveVec[6]=newWaveVec6;
    EthernetCommunicate::waveVec[7]=newWaveVec7;
    EthernetCommunicate::waveVec[8]=newWaveVec8;
    EthernetCommunicate::waveVec[9]=newWaveVec9;
    EthernetCommunicate::waveVec[10] =newWaveVec10;
    EthernetCommunicate::waveVec[11] =newWaveVec11;
    EthernetCommunicate::waveVec[12] =newWaveVec12;
    EthernetCommunicate::waveVec[13] =newWaveVec13;


    map.insert("U1",EthernetCommunicate::waveVec[0]);
    map.insert("I1", EthernetCommunicate::waveVec[1]);
    map.insert("U2", EthernetCommunicate::waveVec[2]);
    map.insert("I2", EthernetCommunicate::waveVec[3]);
    map.insert("U3", EthernetCommunicate::waveVec[4]);
    map.insert("I3", EthernetCommunicate::waveVec[5]);
    map.insert("U4", EthernetCommunicate::waveVec[6]);
    map.insert("I4", EthernetCommunicate::waveVec[7]);
    map.insert("U5", EthernetCommunicate::waveVec[8]);
    map.insert("I5", EthernetCommunicate::waveVec[9]);
    map.insert("U6", EthernetCommunicate::waveVec[10]);
    map.insert("I6", EthernetCommunicate::waveVec[11]);
    map.insert("U7", EthernetCommunicate::waveVec[12]);
    map.insert("I7", EthernetCommunicate::waveVec[13]);


    for(int i=1;i<wavelow_1.size();i++)
    {
        lownum=wavelow_1.at(i);
//        if(lownum!=nullptr && lownum!="OFF")
//        {
            QVector<double> arrX(1280);
            for (int k = 0; k < 1280; k++) {
                arrX[k] = k;
                //                key++;
            }
            QVector<double> waveformData = map.value(lownum);
            qDebug()<<"waveforDAta----:"<<waveformData.length();

            ui->wavefrom->graph(i-1)->setData(arrX,waveformData);
//        }
    }
    ui->wavefrom->replot();

}

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值