初めて質問いたします。よろしくお願いいたします。

連続した電圧信号をフーリエ変換して、その信号にどういった周波数の信号が含まれているかを調べたいのですが、その際に、各スペクトルを電圧値に変換した数値も調べたいと思っています。
参考書等をあたったところフーリエ変換をして、振幅スペクトルを求めるところまではできたのですが、実際の電圧値に変換することができません。

どなたか、よい方法、書籍などがありましたらご教授いただけないでしょうか?
よろしくお願いいたします。

使用環境は、OS…Win2kpro、BorlandC++5.5.1(Borlandからフリーでダウンロードしたもの)です。

A 回答 (3件)

はじめまてお便りだします。

よろしくお願い致します。
どのような用途でFFTを作成しているか存じませんが、ディジタルオーディオや計測用データ解析にしても、連続した信号をFFTにする場合は、ある一定時間でのサンプリングを行い、切り出した波形の位置によりスペクトルの形状が変わってきます。そのため、切り出した時間波形にウインドウ(窓)を掛け、切り出しによるスペクトルの影響を小さくする必要があります。そのあとにフーリエ変換を行います。あとは、ご回答の通り、振幅は実部と虚部の絶対値、位相は虚部÷実部のアークタンジェントです。あと振幅はこのままだと大きい値なので、DCで振幅÷(サンプリング数(2048や4096など)÷2)でACで振幅÷(サンプリング数)ですがDCでよいと思います。y=sin(2πft)などで確かめてください。また、振幅のモードでは、実効値、0-peek,peek-peekがあり、各々、1/sqr(2),1,2倍すれば求まります。長くなりましたが、FFTを参考にされるならば計測機器メーカでFFTアナライザを扱っているところがあるのでそちらを参照をするのも一つの手だと思います。あとわからなければ個人的に質問してくださっても結構です。

参考URL:http://www.onosokki.co.jp/HP-WK/whats_new/onorep …
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありません。
いただいたアドバイスを元に、ネット上をさまよった結果、
参考にできるプログラムを発見することができました。
それと自分の作成したものとを比較した結果、ご指摘いただいた窓関数の扱いを
間違っていたようです。そのほかにもミスがちらほら・・・。
ということで何とか目的を達成することができました。
どうもありがとうございました。

お礼日時:2002/05/10 13:25

何の電圧信号を計測しているか分からないので、「とんでもなく大きな数字になってしまう」といわれても何とも言えません。

答えが分かっているものを、FFTして確かめてみるのが一番でしょう。またFFTの他にも、DFT(離散フーリエ変換)が良かったりする場合があります。また解析する数によっても結果が変ってきます。そこら辺を注意してみてください。

FFTのプログラムは、ネット上でいろいろとソースを公開しているみたいです。検索エンジンで探せば、沢山出てきます。それらを参考にしてみてください。
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありません。
いただいたアドバイスを元に、ネット上をさまよった結果、
参考にできるプログラムを発見することができました。
どうもありがとうございました。

お礼日時:2002/05/10 13:22

FFTしたら、実数部と虚数部の2つの値が出てきます。

その値の大きさ(絶対値)をとると電圧値になります。全ての周波数に対してその計算をすることで、周波数に対する電圧の値を求めることが出来ます。
    • good
    • 0
この回答へのお礼

tsumoruさん、ご回答ありがとうございます。

複素数の絶対値を取るという意味だと思うのですが、
r = 実数部、i = 虚数部とすると
√r*r + i*i
で求められるものですよね?
それが、とんでもなく大きな数値になってしまうのです。
その場合、FFTの計算が間違っているのでしょうか?

お礼日時:2001/11/21 17:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q4月からV-max(新車)が買えなくなるって本当ですか?

私はV-maxに乗りたくてバイクの免許(今は中型)を取りました。1年以内に大型免許を取ってV-maxを買おうと思っていたのですが、4月以降排ガス規制のために新車のV-max(逆車)の登録ができなくなるという噂を聞きました。この噂が本当か知りたいのです。
もし本当なら3月中にV-maxを買って、とりあえず大型免許を取って乗れるようになるまでガレージに置いておこうと思うのですが、ただ置いておくだけでもバイクは痛むと聞きました。これも本当なのでしょうか?
私は女でしかも小柄。でもV-maxのためにバイクの免許を取ったし、いつかV-maxを乗りこなせるようにと運転技術を向上させたくてライディングスクールにも通っています。これでV-maxに乗れなかったら・・・と思うと悲しくなります。
どんな情報でも構いません。ご存知の方教えてください。よろしくお願いします!

Aベストアンサー

排ガス規制でV-MAX(逆車)が入らなくなるかはよく分りませんが、買ったバイクを長期にわたり放置すると色々不具合が生じるのは確かです。(体験済み)
ガソリンタンクからガソリンを抜いて放置すれば、タンク
内部に錆が出ます。かといってガソリンを入れたままだと
ガソリンが酸化しキャブレター内部に付着し、キャブのオーバーホールをしなくてはならなくなります。(かなり長期に放置した場合)
当然、バッテリーもはずして保管しなければならないし、
エンジンオイルも抜いた方がいいと思います。
クラッチがくっ付いてしまう事もあるので、クラッチレバーをグリップに引いた状態で固定したりとか、色々です。
よく周に1度くらいエンジンをかけ、数分間アイドリング
状態にすれば何とかなる・・・などと言われましたが
私の場合はあまり効果が見られませんでした。
なんにせよ、もし限定解除をする前にバイクを購入するなら(期間にもよりますが)それなりの覚悟は必要かと思います。
バイク(とくに大型)は楽しいのでがんばってください。

Q振幅スペクトル、位相スペクトル→原信号の導出法

matlabにてある信号をfftした結果から振幅スペクトル、位相スペクトルをそれぞれ求めたのですが、その2つから元の信号を得る方法を教えてください。

Aベストアンサー

複素スペクトルを振幅スペクトルと位相スペクトルに分離する方法を御存知なら
その逆もできるはずなのですが…

ヒント:複素数=振幅*exp(j*位相)

QV-MAXのライバル車は出てこないか??

僕のイメージですがV-MAXの対抗車はX4だと思います。
しかし、X4は生産中止となりV-MAXの対抗車が
なくなってしまったように感じます。
今後X4の復活やV-MAXの対抗車としてドラッグマシン
が新発売されたりすることはないのでしょうか?
個人的にはX4が好きだったので生産中止なったことは
非常に残念です。

Aベストアンサー

この車種なんかどうでしょう?
排気量の違いがあるのでライバルとはいえないかもしれませんが。

参考URL:http://www.presto-corp.jp/lineup/05_mt-01/index.html

Qfortranでフーリエ変換→パワースペクトル算出

プログラミング全くの初心者です

タイトル通り、任意のデータ(100個ほど)による波長をフーリエ変換し、
そのパワースペクトル算出をfortranで行いたいのです。
(横軸時間、縦軸大きさのデータです)

フーリエ変換の理論上の原理、およびパワースペクトル(=虚部の二乗+実部の二乗)
という定義は、教科書から理解できたのですが、
実際に任意のデータに対してフーリエ変換を施す、となると、一体全体何からはじめていいかわからないのです。


そもそもフーリエ変換をしてデータを補間し、100個をさらに分割して増やさなければならないと思うのですが、(違うかもしれませんが)
何をしたらいいのかわからず途方にくれています。

フーリエ係数を求めるのに積分が出てきますが、これもプログラムでどう表現していいのかわかりません

無教養で申し訳ありません。
どうにもこうにも調べ方がわかりませんでしたので質問させていただきます
どなたかヒントをお願いします・・・・・

Aベストアンサー

京大数理研の大浦拓哉先生という方がフーリエ変換の解説とプログラムを書いておられるようです。

http://www.kurims.kyoto-u.ac.jp/~ooura/fftman/index.html
http://www.kurims.kyoto-u.ac.jp/~ooura/fft-j.html
http://www.kurims.kyoto-u.ac.jp/~ooura/index-j.html
(上記リンク先が文字化けするようならエンコーディングをEUCにしてみてください)

参考URL:http://www.kurims.kyoto-u.ac.jp/~ooura/index-j.html

QV-MAXについて

私の知人がV-MAXに非常に興味があるらしいので、いくつか質問させていただきたく投稿しました。

・まず、インプレ集などでV-MAXは加速「感」が物凄いとよく見ますが、加速感が凄いだけで実質の加速はさほど凄くないのでしょうか?
CBR1000RRやR-1など各社SSと比べると厳しいものがあるかとは思いますが、排気量なりの加速は味わえるのでしょうか?

・あと、以前雑誌で時期V-MAXが発売されるという記事を見たのですが、皆さんの予想ではいつぐらいに発売されると予測されていますか?

それではよろしくお願いします。

Aベストアンサー

実際の加速も凄いです。
ほとんどの人が満足できます。
しかし現在ではもっと速いバイクがあるのが現実です。
V-MAXの基本設計は85年から同じですから。

新型は、まだ出ないんじゃないですかね。

QH8マイコンでの正弦波の電圧振幅

現在H8マイコンを用いて趣味で電子工作をしている者です。スピーカーを鳴らすために、H8マイコンのD/Aコンバータを用いて正弦波を発生させたいと考えております。私が持っている参考書では正弦波は以下のように発生させるものだと書いてあります。

unsigned char sindata[128] ={127,133,139,146,152,158,164,170,
176,181,187,192,198,203,208,212,
217,221,225,229,233,236,239,242,
244,247,249,250,252,253,253,254,
254,254,253,253,252,250,249,247,
244,242,239,236,233,229,225,221,
217,212,208,203,198,192,187,181,
176,170,164,158,152,146,139,133,
127,121,115,108,102,96,90,84,
78,73,67,62,56,51,46,42,
37,33,29,25,21,18,15,12,
10,7,5,4,2,1,1,0,
0,0,1,1,2,4,5,7,
10,12,15,18,21,25,29,33,
37,42,46,51,56,62,67,73,
78,84,90,96,102,108,115,121};

と定義して、(254が振幅の一番上、0が振幅の一番下、127がちょうど真ん中になります)このデータを割り込みを使って、自分の使いたい周波数の正弦波を出す、ということになっています。

ここでふと思ったのが、この正弦波は振幅5V(H8マイコンの動作電源が5V)しか出ないのではないんじゃないかと。振幅を変えるためにはどうしたらいいんでしょうか?上記の128個のデータを全て書き直すしかないのでしょうか?それとも×3/5とかにしてデータを小さくしたらいいんですか?でもそれだとデータが整数じゃなくなってしまいますよね?どうしたら振幅を変えられるのでしょうか?どなたかご教授願います。

現在H8マイコンを用いて趣味で電子工作をしている者です。スピーカーを鳴らすために、H8マイコンのD/Aコンバータを用いて正弦波を発生させたいと考えております。私が持っている参考書では正弦波は以下のように発生させるものだと書いてあります。

unsigned char sindata[128] ={127,133,139,146,152,158,164,170,
176,181,187,192,198,203,208,212,
217,221,225,229,233,236,239,242,
244,247,249,250,252,25...続きを読む

Aベストアンサー

>それとも×3/5とかにしてデータを小さくしたらいいんですか?
その通りですね。

>でもそれだとデータが整数じゃなくなってしまいますよね?
整数で演算すれば、答えも整数ですよ(少数は切り捨てられます)。その分もとの波形より歪が生まれますけどね。

ただ、sindata自体もすでに小数点以下は切り捨てられていますので誤差はすでに含まれていますから、誤差に誤差を積み重ねるので音はさらに悪くなります。

QV-MAXに似たバイク

この間雑誌を見ていたらV-MAXというバイクがあり、一目惚れしました。

V-MAXの形似た中型・大型のバイクってあるのでしょうか?

中型・大型バイクについて全くの初心者なので失礼な質問かもしれませんが、ご存じの方がいらっしゃいましたらよろしくお願いいたします。

Aベストアンサー

ああ、判りますその気持ち。
私も20ン年前にV-MAXにあこがれて限定解除したオッサンですので。
あまり似たのってないんですが、
意匠的に類似点があるとすると
FZX750とかT-MAX(これはスクーターですが)あたりでしょうかね‥‥。

QBorland Delphi 2005 Pro版に同梱されていたOptimizeit Profiler

Borland Delphi 2005 Pro版を購入しました。
そして、その製品に同梱されていたBorland Optimizeit Profiler for the Microsoft .Net Frameworkをインストールしたのですが、同製品を起動するとserial numberとkeyの入力を求められるのですが、ドキュメントやReadmeの類を読んでみてもそれらしきコード等が記載されていません。この製品はProfessional版では利用できないのでしょうか?ご存知の方がいらっしゃいました、お教えください。

Aベストアンサー

http://www.borland.com/products/downloads/download_opt_profiler.html

(If you have a CD)
の方からキーをゲットして下さい。

参考URL:http://www.borland.co.jp/delphi/devsupport/d2005issues.html

QV-MAX乗りの聖地

V-MAX乗りの聖地ってどこですかね?

Aベストアンサー

V-MAXに限ると難しいですが、ヤマハ車の母胎ということで静岡県磐田市の製造工場はいかがでしょうか?

東京圏、大阪圏のライダーとも集まりやすいエリアなのでオフ会も多く開催されているみたいです。

QMATLABで二次元フーリエ変換

画像処理のプログラムを作成しています。参考にしている参考書は【最新MATLABハンドブック】という本です。この本を参考にして、一次元フーリエ変換のプログラムから画像処理の二次元フーリエ変換のプログラムに変更させたいのですが、fft2のところでエラーが出てしまいます。自分なりにプログラムを書き直してみたのですが、fft→fft2に関数変更する以外にもっと根本的なことが必要なのでしょうか?

作成したプログラムはこれです。
clear;close all;n=256;dt=0.005;
t=((1:n)-1)*dt;
f=t/dt/dt/n;n2=n/2;n2p1=n2+1;
X=imread('001.bmp');
X=rgb2gray(X);
X=double(X);
[m,n]=size(X);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%calc corresponding index number
F=50;
index=round(F*dt*n+1);index1=(index-1):(index+1);
index2=n+2-index1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%band elminate filter
befil=ones(size(X));
befil(index1)=zeros(size(index1));
befil(index2)=zeros(size(index2));
Y=fft2(X);    ←ここでエラーが出ます。
subplot(2,2,1)
plot(f,abs(Y)/n2,'r');axis([0 f(n2p1) 0 1])
xlabel('Frequency (Hz)'),ylabel('Magnitude');
title('Original Signal in freq domain');
%%Now apply fft filter in freq domain
fftX=fftX.*befil;
subplot(2,2,3)
plot(f,abs(Y)/n2,'r');axis([0 f(n2p1) 0 1])
xlabel('Frequency (Hz)'),ylabel('Magnitude');
title('filtered Signal in freq domain');
subplot(2,2,2)
imaagesc(X),colormap(gray),axis tight;
subplot(2,2,4)
imagesc(real(ifft2(Y))),colormap(gray),axis tight;

画像の一部分の情報のみを欠落させたいのです。そのためにはバンドエルミネーションフィルタと思ったのですが…もし違うようならご指摘をお願いします。ちなみに001.bmpはカラー画像です。

画像処理のプログラムを作成しています。参考にしている参考書は【最新MATLABハンドブック】という本です。この本を参考にして、一次元フーリエ変換のプログラムから画像処理の二次元フーリエ変換のプログラムに変更させたいのですが、fft2のところでエラーが出てしまいます。自分なりにプログラムを書き直してみたのですが、fft→fft2に関数変更する以外にもっと根本的なことが必要なのでしょうか?

作成したプログラムはこれです。
clear;close all;n=256;dt=0.005;
t=((1:n)-1)*dt;
f=t/dt/dt/n;n2=n/2;n2...続きを読む

Aベストアンサー

これの可能性が高いと思います。
http://www.cybernet.co.jp/matlab/support/techkwdb/search_view.php?id=1560
そこに書いてあるように、
which fft2
とかしてどのmファイルが実行されているか調べてください。
もしくは、
edit fft2
として、20行目を見てみてください。


人気Q&Aランキング

おすすめ情報