Re: [問題] 關於用c或是c++畫訊號波形圖
※ 引述《kyohung (哀..可悲...)》之銘言:
: 我想請問各位的大大,我現在想透過c或是c++來寫一個畫簡單波形圖的程式
: 我已經把讀檔和把裡面有用的資訊轉成txt的部份寫好,現在我必須寫一個
: 能夠在讀入txt資料後畫出一張波形圖來,但是其中我可以設定橫軸的時間刻度
: 我不知道這該參考哪些函式,請各位大大給我一些建議,謝謝!!
產生一個process執行gnuplot,使用popen建立一個對gnuplot的指令通道
c的部份只是單純產生一對數值給暫存檔,依據這暫存檔畫出圖形
下面這範例產生3d點的順序有點問題,只是在這做個示範.....
[原碼取自gnuplot使用手冊]
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
using namespace std;
#define PANIC(a) do { perror(a);\
if (temp) unlink (temp);\
exit(1);\
}while(0);
int main()
{
char *temp;
FILE *command,*data;
double x,y,f;
int ix;
if((temp = tmpnam((char*)0))==0) PANIC("tmpnam failed");
if(mkfifo(temp, S_IRUSR | S_IWUSR)!=0) PANIC("mkfifo failed");
command = popen("gnuplot","w");
fprintf(command,"splot \"%s\" with lines\n",temp);fflush(command);
data = fopen(temp,"w");
for(ix=-35 ; ix<35 ; ix++)
{
for(int iy=-35;iy<35;iy++)
{
x=ix/10.0;
y=iy/10.0;
f=sin(3*x+4*y);
fprintf(data,"%f %f %f\n",x,y,f);
}
}
fclose(data);
fprintf(stderr,"press enter to continue...");fflush(stderr);
getchar();
fclose(command);
unlink(temp);
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.132.23.74
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章