如何繪製 spectrogram ? |
尚未結案
|
Banco
一般會員 發表:5 回覆:7 積分:2 註冊:2003-07-23 發送簡訊給我 |
小弟目前正在撰寫一個處理聲音的程式, 其中有一個功能是要能秀出
spectrogram, 我不曉得BCB中有沒有現成的元件可以幫我完成這件事
, 之前有嚐試用 TChart 和 TSeries 來拼湊, 但做不出來. 希望各位
大大能幫我一下, 指點我該如何做. 自己是想說用 Tchart 來完成是最方便的, 如果 TChart 無法逹成, 那
是不是非得使用 TImage, 然後自己在Canvas上畫圖? spectrogram 的圖形如下, 橫軸是時間, 縱軸是頻率 (下圖為matlab所繪)
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
Banco
一般會員 發表:5 回覆:7 積分:2 註冊:2003-07-23 發送簡訊給我 |
|
Banco
一般會員 發表:5 回覆:7 積分:2 註冊:2003-07-23 發送簡訊給我 |
土法練鋼, 我放棄用TChart了, 直接開一個TImage在上頭作畫, 效果還不錯
不過質感跟 matlab 跑出來的圖還是有差 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=12839899&CC=287161">
void __fastcall TForm1::Button2Click(TObject *Sender) { v_count=(double)(Image1->Height)/128; h_count=(double)(Image1->Width)/FRAMEINDEX; for(i=0;i<FRAMEINDEX;i++) { for(j=0;j<FRAMESIZE;j++) { A[j].real=Buffer16[i*FRAMESHIFT+j]*Hamming[j]; A[j].imag=0; } B=Bit_Reverse(A); A=FFT(B); for(j=0;j<FRAMESIZE/2;j++) { color_value=sqrt(A[j].real*A[j].real+A[j].imag*A[j].imag); color=Form1->ColorMapping(color_value); Image1->Canvas->Pen->Color=color; Image1->Canvas->Brush->Color=color; Image1->Canvas->Rectangle(i*h_count,Image1->Height-j*v_count,(i+1)*h_count,Image1->Height-(j+1)*v_count); } } TColor TForm1::ColorMapping(double value) { int temp; temp=Floor(value); if(temp<4) return clBlack; else if(temp<16) return clBlue; else if(temp<64) return clAqua; else if(temp<256) return clGreen; else if(temp<1024) return clLime; else if(temp<4096) return clYellow; else if(temp<16384) return clFuchsia; else return clRed; } |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
residue
中階會員 發表:90 回覆:153 積分:53 註冊:2003-07-02 發送簡訊給我 |
|
Banco
一般會員 發表:5 回覆:7 積分:2 註冊:2003-07-23 發送簡訊給我 |
|
residue
中階會員 發表:90 回覆:153 積分:53 註冊:2003-07-02 發送簡訊給我 |
|
Banco
一般會員 發表:5 回覆:7 積分:2 註冊:2003-07-23 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
huei_brother
一般會員 發表:36 回覆:15 積分:10 註冊:2004-08-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |