ページ 11

電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シュミレー

Posted: 2013年6月18日(火) 21:33
by せんしょ
解ける方至急教えて下さい。お願いします。
2つ以上の周波数成分を含む入力信号から、ディジタルフィルタを用いて特定の周波数成分のみを強調する数値シュミレーションを行う。
samples.cpp:このままでは動かないので、関数(iir_bilinear,gen_input,simulate,output)によって隠蔽されているコードを各自で作成しシュミレーションパラメータなどを適宣変更する。
#include<stdio.h>
#include<stdlib.h>
//#include"sample.h"
int main()
{
シュミレーションパラメータ
count double fs=8000.0: //サンプリング周波数
const unsigned int n=300; //データポイント数
const double f[3]={50.0,500.0,3000.0}; //入力信号に含まれる周波数
const double fc[2]={200.0,800.0}: //遮断周波数(BPF用)
const unsigned int m2; //フィルタ次数
double b[m+1],a[m]; //フィルタ係数
double x[n],y[n]; //入出力信号
double t[n]; // 時間
FILE*fp //結果出力用ファイルポインタ
フィルタ設計
//fc,fs,mから、双一次変換法によりディジタルフィルタの係数を定めそれをb,aに代入するコードを書く
//余白や改行の取り方にもよるが、大体~20行程度で可能
iir_bilinear1(b,a,fc,fs,m); //双一次変換法、手計算でも可
シュミレーション
//パラメータf,fs,nと繰り返し処理などにより
//入力信号と時間情報を生成し、それらをx,tにそれぞれ代入するコードを書く
//余白や改行の取り方にも夜が、大体~20行程度で可能
gen_input(t,x,f,fs,n); //入力信号生成
//係数b,a,nと繰り返しりょリなどにより、入力x,出力yとしてc/c++の文法にそって差分方程式そのものを書けばよい
//余白や改行の取り方にもよるが,大体~20行程度で可能
simulate(y,x,b,a,n); //フィルタシュミレーション
結果出力
fp=fopen("rersult.csv","w"); //出力用ファイルオープン
//繰り返し処理とfprintfなどを使用して、t,x,yを書き出すコードを書く
//余白や改行の取り方にもよるが、大体~10行程度で可能
output(fs,x,y,t,n); //入出力信号をファイルへ書き出し
fclose(fp); //ファイルクローズ
return 0;
}

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月19日(水) 16:55
by tlnlniri
私なんかがしゃしゃり出てきて申し訳ありません。

2つほど確認したいことがあります。
・締め切り(あれば)はいつでしょうか?
・アナログフィルタ(BPF)の伝達関数を双一次変換すればよいのでしょうか?(私の読解力不足のため、何がわからないのかわかりません。)


BPFフィルタ係数さえ算出できれば双一次変換の過程は無くてもいいなら
→ http://floor13.sakura.ne.jp/book03/book03.html

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月19日(水) 19:28
by せんしょ
今週金曜です。
双一次の過程はほしいです。
すいませんがお願いします

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月20日(木) 01:27
by tlnlniri
解きました。
文字が見づらかったらごめんなさい。

BPFアナログ伝達関数は、
http://sim.okawa-denshi.jp/RLCbpkeisan.htm
の「通過中心周波数からRLC定数の選定と伝達関数」と同じものです。

fc/Q は fc2-fc1 に変換してください。
fc^2 は fc1*fc2 に変換してください。
fc1またはfc2は、tan(π*対象周波数/標本化周波数)/2π で求めます。


【追記】
ファイルの順番はバラバラです。
画像ファイルにGPS情報が入っていたため一度削除しました。

再アップ

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月20日(木) 01:52
by tlnlniri
係数導出をまとめたzipはアップロードできなかったので分割で置いておきます。

フィルタ係数の使い方(IIRの式の使い方)はわかりますよね?

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月20日(木) 14:40
by ゲス
プログラムに直した書き方はわかりますか?
パソコンに打たないといけないので、、、、、、

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月20日(木) 14:40
by ゲス
プログラムに直した書き方はわかりますか?
パソコンに打たないといけないので、、、、、、

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月20日(木) 15:04
by softya(ソフト屋)
申し訳ありません、名前の統一をお願いします。
ゲス=せんしょさんで間違いないでしょうか?

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月20日(木) 17:21
by tlnlniri
遅れて申し訳ありません。昼間は返信できないです。

コード:

/*******************************************************************
fc1, fc2:fc1[Hz] ~ fc2[Hz]を通過
fs:標本化周波数
a, b:フィルタ係数
※a[0]は必要ないが、1.0とすることが多い。
*******************************************************************/
void BPF(double fc1, double fc2, double fs, double a[], double b[])
{
	fc1 = tan(M_PI * fc1 / fs) / (2.0 * M_PI);
	fc2 = tan(M_PI * fc2 / fs) / (2.0 * M_PI);
  
	a[0] = 1.0;
	a[1] = (8.0 * M_PI * M_PI * fc1 * fc2 - 2.0) / (1.0 + 2.0 * M_PI * (fc2 - fc1) + 4.0 * M_PI * M_PI * fc1 * fc2);
	a[2] = (1.0 - 2.0 * M_PI * (fc2 - fc1) + 4.0 * M_PI * M_PI * fc1 * fc2) / (1.0 + 2.0 * M_PI * (fc2 - fc1) + 4.0 * M_PI * M_PI * fc1 * fc2);
	b[0] = 2.0 * M_PI * (fc2 - fc1) / (1.0 + 2.0 * M_PI * (fc2 - fc1) + 4.0 * M_PI * M_PI * fc1 * fc2);
	b[1] = 0.0;
	b[2] = -2.0 * M_PI * (fc2 - fc1) / (1.0 + 2.0 * M_PI * (fc2 - fc1) + 4.0 * M_PI * M_PI * fc1 * fc2);
}
双一次変換は手計算でよいと書いてあったので手計算で。(上の関数内では双一次変換は行っていない)
あとはIIRの式に適用してください。

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月20日(木) 18:18
by box
>シュミレーション

そもそも、こんな誤った用語を使っている時点でアウトだと思います。
simulationという単語をむりやりカタカナで表記したとき、
シミュレーションにはなるかもしれませんがシュミレーションには絶対ならないことでありましょう。

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月20日(木) 21:41
by Ryo
課題の丸投げに見えるが

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月21日(金) 01:11
by 理恵
秦野先輩オッスオッス!!!!!!!!

Re: 電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シ

Posted: 2013年6月21日(金) 10:31
by softya(ソフト屋)
申し訳ありません。
荒れる気配がしてきているので、挑発するような書き込みはご遠慮ください。

それと課題の丸投げも例外事項は設けられています。詳しくはフォーラムルールをお読みください。