資源簡介
基于Qt4.5的一個頻譜繪制源碼,下載后編譯,運行即可
代碼片段和文件信息
/***************************************************************************
?*???Copyright?(C)?2008?-?Giuseppe?Cigala??????????????????????????????????*
?*???g_cigala@virgilio.it??????????????????????????????????????????????????*
?*?????????????????????????????????????????????????????????????????????????*
?*???This?program?is?free?software;?you?can?redistribute?it?and/or?modify??*
?*???it?under?the?terms?of?the?GNU?General?Public?License?as?published?by??*
?*???the?Free?Software?Foundation;?either?version?2?of?the?License?or?????*
?*???(at?your?option)?any?later?version.???????????????????????????????????*
?*?????????????????????????????????????????????????????????????????????????*
?*???This?program?is?distributed?in?the?hope?that?it?will?be?useful???????*
?*???but?WITHOUT?ANY?WARRANTY;?without?even?the?implied?warranty?of????????*
?*???MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE.??See?the?????????*
?*???GNU?General?Public?License?for?more?details.??????????????????????????*
?*?????????????????????????????????????????????????????????????????????????*
?*???You?should?have?received?a?copy?of?the?GNU?General?Public?License?????*
?*???along?with?this?program;?if?not?write?to?the?????????????????????????*
?*???Free?Software?Foundation?Inc.???????????????????????????????????????*
?*???59?Temple?Place?-?Suite?330?Boston?MA??02111-1307?USA.?????????????*
?***************************************************************************/
#include?“qfreq.h“
QFreq::QFreq(QWidget?*parent)?:?QWidget(parent)
{
????initValue();
????initColor();
}
void?QFreq::initValue()
{
????start_point?=?0;
????zoom_point?=?((1024/2)+1)*20000/22050;
????freq1?=?0;
????freq2?=?5;
????freq3?=?10;
????freq4?=?15;
????freq5?=?20;
????range_freq?=?20;
????typeFFT?=?0;
????lockFFT?=?false;
}
void?QFreq::initColor()
{
colLin?=?Qt::black;
????colLog?=?Qt::black;
????col512?=?Qt::black;
????col1024?=?Qt::black;
????col2048?=?Qt::black;
????col4096?=?Qt::black;
????colLock?=?Qt::red;
}
void?QFreq::setZoomPoint(int?N)
{
????zoom_point?=?((N/2)+1)*20000/22050;
}
void?QFreq::calculateFFT(int?N)
{
????/*
???????QFile?file?(“test.wav“);
???????if?(!file.open(QIODevice::ReadOnly))
???????????return;
???????char?*data;
???????file.read(data?N);
???????for?(i?=0;?i?<=N;?i++)
???????{
???????????in[i]?=?(double)data[i];
???????????i++;
???????}
??????
???????*/
????double?*in;
????double?*out;
????fftw_plan?plan;
????double?A[N];
????magnitudeLin?=?0;
????magnitudeLog?=?0;
????min_val_lin?=?5000000;
????max_val_lin?=?-1000;
????min_val_log?=?5000000;
????max_val_log?=?-1000;
????int?is16bitfile?=?1;
????int?val?val2;
????char?inc[N];
????FILE?*infile;
????const?char?*?fileName?=?wavFile.toLatin1().data();
????infile?=?fopen(fileName?“r“);
????//?skip?wav?file?header
????fgets(inc37infile);
????fgets(inc9infile);
????//?read?data?and?fill?“A“-array
????for?(int?v=0;?v ????{
????????val?=?fgetc(infile);
????????if?(is16bitfile)
????????{
????????????val2?=?f
- 上一篇:ACS 5.2 license
- 下一篇:一個用Qt來繪制虛擬儀器儀表
評論
共有 條評論