我是靠谱客的博主 想人陪丝袜,最近开发中收集的这篇文章主要介绍信号采集基本概念,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.实数计算fft得到的频谱图应该是关于采样率的一半对称镜像。复数则没有镜像

2.带宽:采样率的一半

3.频率分辨率:采样率除以点数

4.QCustomplot画频谱图:

(1)初始化:提widget控件升为qcustomplot

(2)标签划分

//自定义X轴标签
m_FreqXTicker = QSharedPointer<QCPAxisTickerText>(new QCPAxisTickerText);
ui->plot_freqSpec->xAxis->setTicker(m_FreqXTicker);
QCPRange range_x = ui->plot_freqSpec->xAxis->range();
double labelRange = (range_x.upper - range_x.lower);
double labelInterval = labelRange/5;
QVector<QString> vecLabels;
QVector<double> vecTicks;
for (int i = 0; i < 5; i++)
{
vecTicks.push_back(range_x.lower+labelInterval*i+labelInterval/2);
vecLabels.push_back(QString("%1").arg((range_x.lower+labelInterval*i+labelInterval/2)/1e9,0, 'f', 3));
}
m_FreqXTicker->addTicks(vecTicks, vecLabels);

先setRange(触发xAxisFreqChanged,调整坐标),然后再setData

connect(ui->plot_freqSpec->xAxis, SIGNAL(rangeChanged(QCPRange)), this, SLOT(xAxisFreqChanged(QCPRange)));
ui->plot_freqSpec->xAxis->setRange(xVec[0],xVec[xVec.size()-1]);
ui->plot_freqSpec->graph(0)->setData(xVec,freqVec);
void MainWindow::xAxisFreqChanged(QCPRange range)
{
//获取现有的刻度标签
//QVector<QString> vecLabels =
ui.plot_freqSpec->xAxis->tickVectorLabels();
//QVector<double> vecTicks = ui.plot_freqSpec->xAxis->tickVector();
QVector<QString> vecLabels;
QVector<double> vecTicks;
QCPAxisTickerText* pTicker = dynamic_cast<QCPAxisTickerText*>(ui->plot_freqSpec->xAxis->ticker().data());
pTicker->clear();
double XRange = range.upper - range.lower;
double labelInterval = XRange/5;
for (int i = 0; i < 5; i++)
{
vecTicks.push_back(i*labelInterval + range.lower+labelInterval/2);
vecLabels.push_back(QString("%1").arg((i*labelInterval + range.lower+labelInterval/2) / (1000 * 1000), 0, 'f', 3));
}
pTicker->addTicks(vecTicks, vecLabels);
qDebug() << range.lower << range.upper;
}

最后

以上就是想人陪丝袜为你收集整理的信号采集基本概念的全部内容,希望文章能够帮你解决信号采集基本概念所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部