基于Qt4的电机变化数据处理工具开发

本文档介绍了基于Qt4开发的电机变化数据处理工具,包括需求分析、实现思路、开发流程及使用指南。该工具支持加载数据文件、计算均方差等功能,可替代Excel进行电机时序变化测量数据处理,确保数据准确性。
摘要由CSDN通过智能技术生成

电机时序变化测量数据处理通常采用Excel来进行,很容易出错,且数据保存后时间长了也不知道什么意思。所以需要开发个专门计算电机时序变化量的小工具。这样就能保证不出错。

目录

1 需求

2 实现思路和技术栈

3 开发流程

1 新建主窗口程序

2 初始化

3 打开文件

4 列表右键菜单

5 计算均方差

4 程序使用指南

1 打开文件

2 查看文件内容

3 修改横纵范围

4 计算均方差

5 与Matlab结果对比


1 需求

  • 1 能加载多个数据文件。
  • 2 能指定截止时间
  • 3 能调整场值显示范围
  • 4 能导出图片
  • 5 能计算均方差

2 实现思路和技术栈

加载文件可以用listView来实现,截止时间的指定可以用lineEdit,绘图还是用QCustomPlot,功能操作就用目录实现,计算均方差需要用到容器。

3 开发流程

1 新建主窗口程序

用UI设计器摆放控件。不得不说Qt的UI设计器比Matlab的GUI真是方便多了。而且美观。

2 初始化

我们的文件一般不超过5个,用5组颜色就可以。

    // 设置默认绘图颜色序列 蓝 青 绿 红 黄
    colorList<<QColor(0,0,255)<<QColor(0,255,255)<<QColor(0,255,0)<<QColor(255,0,0)<<QColor(255,255,0);

之后对模型视图初始化,再设置初始参数。

    // 设置右键菜单
    menu = new QMenu(this);
    menu->addAction("Set Color", this, SLOT(slotSetColor()));
    menu->addAction("Open Directory", this, SLOT(slotOpenDir()));
    ui->listView->setContextMenuPolicy(Qt::CustomContextMenu);


    // 模型视图
    model = new QStringListModel;
    ui->listView->setModel(model);

    // 默认参数
    ui->pngWidth->setText(QString::number(500));
    ui->pngHeight->setText(QString::number(300));

3 打开文件

用action打开文件,并显示在列表清单。打开文件后,要获取时间和场值范围,同时时间绘图功能。

    // 逐个文件读取并绘图
    tim.clear();
    val.clear();
    ui->plot->clearGraphs();
    QVector<double> xmin,xmax,ymin,ymax;
    for(int i = 0; i<files.count(); i++)
    {
        // 读取时间和测量值 形成x和y
        QFile file(files.at(i));
        if(!file.open(QIODevice::ReadOnly))
            return;
        QTextStream in(&file);
        QString line;
        QVector<double> x,y;
        line = in.readLine();
        line = in.readLine();
        line = in.readLine();
        QStringList info = line.split(" ");
        QString name = info.at(3).right(3);
        line = in.readLine();
        line = in.readLine();
        line = in.readLine();
        line = in.readLine();
        while(!in.atEnd()){
            line = in.readLine();
            QStringList list = line.split(" ",QString::SkipEmptyParts);
            double time = list.at(0).toDouble();
            x<<hms2dec(time)/3600.0;
            y<<list.at(1).toDouble();
        }
        file.close();
        /
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Intimes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值