- 締切済み
正弦波の波形について
#include<math.h> #define M 1000 #define T 20 #difine PI 3.1415926 int i; double sig[M]; main(){ for(i=0;i<M;i++){ sig[i]=sin(((double)i/M)*T*2*PI); } } この正弦波の波形を8ビット、16ビットに直したいのですが 分かりません。教えて下さい。お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- shigatsu
- ベストアンサー率26% (511/1924)
回答No.3
し、しまった・・・(^^; 補足ありがとうございました。>tatimiさん 最近あんまりプリミティブなことしてないので・・言い訳。
- tatimi
- ベストアンサー率34% (19/55)
回答No.2
すっ、すいません。shigatsuさんへ。 sinの範囲は-1~+1です。 符号なし8bitの範囲は0~255です。 という事で、 (符号付き)8bit(signed char)の範囲は-128~+127、 (符号付き)16bit(signed short)の範囲は-32768~+32767です。 -128や-32768という値は使わないように範囲を変換してください。
- shigatsu
- ベストアンサー率26% (511/1924)
回答No.1
「波形を?ビットに直す」ってのはどういう処理を期待しているのでしょうか? 最大幅を?ビットにしたいってことですかね? sin() の発生範囲は確か0~1の間ですよね?欲しい範囲が例えば符号無し8ビットとして0~256。この辺からどうすれば良いか見えてきませんか?