ある信号のサンプル遅れ時間の信号を作成する遅延器を作りたいです。
例えば以下のコードがあるとします。
tは時間、dtは刻み幅、tmaxは最大時間です。
int main(void){
double dt,t,tmax
dt=0.001,tmax=1
for(t=0.0;t<=tmax;t+=dt) {
v=2*cos(2*3.14*60*t);
という正弦波を作成する際、これより1サンプル遅れた信号を作成したいです
v2=2*cos(2*3.14*60*(t-dt))
という新たな関数を定義すればよいとは思いますが、そうではなくてvを遅延器に入力することで1サンプル遅れた信号を作成したいです。つまり遅延器をこのfor文内でどう定義すればいいのかを考えています。
ブロック線図で表すと以下の1/zが欲しいです。
v(k)→| 1/z |→v(k-1)
これ以外にもたとえば微分方程式で得た解を遅延器に入力して解の1サンプル遅れた信号を作成したいので、上のように(t-dt)という設定はできません。詳しい方に少しだけ聞く時間があったので聞いてみたところ、「時間を保持すればいいやん」というアドバイスを頂きましたがどういう風に記述すればいいのかわかりません。
分かる方がいらっしゃったらどうぞご教授お願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
ひとつ前の値を保持しておけばいいのなら:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main(void){
double dt = 0.001;
double t;
const double tmax = 1.0;
double cur = 0.0; /* 現在値 */
double old; /* ひとつ前 */
for ( t = 0.0; t <= tmax; t += dt ) {
old = cur; /* 直前の値をoldに */
cur = 2*cos(2*3.14*60*t);
printf("%lf : %lf %lf\n", t, old, cur);
}
return 0;
}
No.3
- 回答日時:
なぜ一足飛びに「配列」が出てきたのは知らんけど, まあいいか. どうせ一般的な話をしようとすると配列のお世話になることだし.
で「配列を使う」と思ったのなら, 実際にそれに基づいてプログラムを作ってみてはいかがでしょうか. もちろん, 例えば
「1サンプル前の値」は配列のどの要素が保持するのか
などを意識する必要はありますが, そこさえきちんとできていればさほど難しくないはずですよ.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ガラケー・PHS SMSメールの受信遅延原因はガラケー自体の欠陥では 8 2022/08/06 11:46
- 工学 周波数fで表現したフーリエ変換の対称性に関する質問です。 1 2022/09/14 12:27
- 工学 dフリップフロップで二分周器を作成してck (黄色)と出力Qの波形をオシロスコープで確認したのですが 1 2022/11/30 22:19
- デスクトップパソコン 通話が遅延します 1 2023/06/18 02:36
- 物理学 時間を語るなら、(複数の時間の正体)を知る必要が有る。 1 2023/02/16 22:14
- 工学 Dフリップフロップで二分周器を作成して波形をオシロスコープで確認したのですが、クロックとQ に遅延は 3 2022/12/09 14:14
- その他(行事・イベント) 今年の入学式、学生服がなぜ間に合わなくなったの? 2 2022/04/07 14:24
- 物理学 フーリエ変換の振幅について 1 2022/09/04 08:56
- 日本語 文章訂正 5 2023/04/01 18:56
- 会社・職場 毎日のように遅刻してくる、職場の男性。 この男性11時出勤なんですが、毎日のように遅刻してきます。 5 2023/03/15 15:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語を実行すると-infが出てき...
-
2分法で方程式の複数の解を自...
-
doubleの変数にintとintの割り...
-
至急です! マクロ定義で #defi...
-
float型とdouble型の変数の違い...
-
-1.#IND00と出てしまうのですが...
-
C言語で-23乗を取り扱うには
-
C 開放してるのにエラー(doubl...
-
C言語 関数プロトタイプ宣言の...
-
C# 浮動小数の数値文字列化
-
DWORDの警告
-
線形補間
-
1円、2円、3円・・・と貯金...
-
Cで3乗根を求める方法
-
C言語でのsinxのマクローリン展...
-
関数におけるif文とreturn文に...
-
「割り算」 と 「分数の掛け算」
-
C言語でdouble型の小数点の引き...
-
int とdoubleの比較
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
doubleの変数にintとintの割り...
-
C 開放してるのにエラー(doubl...
-
Cで3乗根を求める方法
-
float型とdouble型の変数の違い...
-
至急です! マクロ定義で #defi...
-
C言語の型による処理速度の違い
-
int とdoubleの比較
-
関数におけるif文とreturn文に...
-
C言語初心者 構造体 課題について
-
c言語のコンパイルエラー canno...
-
C言語 関数プロトタイプ宣言の...
-
C言語を実行すると-infが出てき...
-
float?数字の後にLがつくもの
-
数値を指数部と仮数部に分離したい
-
difftime()について
-
浮動小数点数が表示されないん...
-
たくさんの数の平均を求める方...
-
DWORDの警告
-
-1.#IND00と出てしまうのですが...
おすすめ情報