電子工学出2つ以上の周波数成分を含む入力信号からディジタルフィルタを用いて、特定の周波数成分のみを強調する数値シュミレー
Posted: 2013年6月18日(火) 21:33
解ける方至急教えて下さい。お願いします。
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;
}
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;
}