归一化处理过程Demo

1.生成数据

#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
    FILE *l_pFile = fopen("E:/workspace/001.dat", "wb");

    if (l_pFile == NULL)
    {
        cout << "File Open Fail" << endl;
    }

    double l_dNum = (pow(2,15)-1)/512;
    double l_dLow = -pow(2,15);
    int l_iBuffer = l_dLow;
    for (int i=0; i<1024; i++)
    {
        if (i > 0)
        {
            l_iBuffer += l_dNum;
        }
        cout << l_iBuffer << " ";
        fwrite(&l_iBuffer, sizeof(int), 1, l_pFile);
    }
    fclose(l_pFile);

    cout << "Hello World!" << endl;
    return 0;
}

2.数据转换 int32 -> int16

#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
    FILE *l_pReadFile = fopen("E:/workspace/001.dat", "rb");
    if (l_pReadFile == NULL)
    {
        cout << "Read File Open Fail" << endl;
    }

    FILE *l_pWriteFile = fopen("E:/workspace/002.dat", "wb");
    if (l_pWriteFile == NULL)
    {
        cout << "Write File Open Fail" << endl;
    }

    int l_iBuffer;
    short l_sBuffer;
    for (int i=0; i<1024; i++)
    {
        fread(&l_iBuffer, sizeof(int), 1, l_pReadFile);
        l_sBuffer = (short)(l_iBuffer/(pow(2,15)-1)*(pow(2,7)-1));
        fwrite(&l_sBuffer, sizeof(short), 1, l_pWriteFile);
    }

    fclose(l_pWriteFile);
    fclose(l_pReadFile);

    cout << "Hello World!" << endl;
    return 0;
}

3.显示数据(Qt5.8.0)

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QPainter>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    void showData();
    void paintEvent(QPaintEvent *event);

private:
    Ui::Widget *ui;
    QPoint          *m_pPoints;
};

#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    showData();
}

Widget::~Widget()
{
    delete[] m_pPoints;
    delete ui;
}

void Widget::showData()
{
    m_pPoints = new QPoint[1024];
    FILE *l_pFile = fopen("E:/workspace/002.dat", "rb");
    if (l_pFile == NULL)
    {
        qDebug() << "Open File Fail";
        return;
    }

    short l_sNum;
    for (int i=0; i<1024; i++)
    {
        fread(&l_sNum, sizeof(short), 1, l_pFile);
        m_pPoints[i].setX(i);
        m_pPoints[i].setY((int)l_sNum);
    }
    fclose(l_pFile);

//    this->repaint();
}

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawPolygon(m_pPoints, 1024);
}

4.运行效果


猜你喜欢

转载自blog.csdn.net/hu12306/article/details/79873208