fft関数の出力データの成分分解

13 次查看(过去 30 天)
Naoki Ishibashi
Naoki Ishibashi 2016-11-15
添付の地表温度データを以下のプログラムで時系列プロットし、それをフーリエ変換しプロットしたいため、fft関数を使おうと考えたのですがうまくいきません。例題ページを見たところ、データをsin成分とcos成分に分解してからプロットしなくては行けないのかなと考えたのですが、その方法もわからず、もしご存知の方いらしましたら教えて頂きたいです。 以下時系列プロットのプログラムです
filename =('1.txt');
x = load(filename);
x = timeseries(x);
x.Name = 'Daily Count';
x.TimeInfo.Units = 'days';
x.TimeInfo.StartDate = '04-06-01 00:00'; % Set start date.
%x.TimeInfo.End = '04-08-31 21:00';
x.TimeInfo.Units = 'hours';
x.TimeInfo.Increment = 3;
x.TimeInfo.Format = 'yy-mm-dd HH:MM'; % Set format for display on x-axis.
x.Time = x.Time - x.Time(1); % Express time relative to the start date.
plot(x)
以下フーリエ変換です
filename =('1.txt');
x = load(filename);
y = fft(x);
plot(y)
  2 个评论
michio
michio 2016-11-15
编辑:michio 2016-11-15
実施されたい処理内容・欲しい最終結果が分からなくなってきました。データをsinとcos成分に分解するという点についてもう少し具体的に知りたいところですが、もし、質問内に登場する「例題ページ」に何かお求めの結果に近いものがあるようでしたら、そちらがヒントになるかもしれません。
Naoki Ishibashi
Naoki Ishibashi 2016-11-16
编辑:Naoki Ishibashi 2016-11-16
不明確な質問をしてしまい申し訳ありません、 自分の中のイメージは添付(fourier.png)のようなグラフです。 fftで出力された値を振幅にしグラフにプロットしたのですが(添付1_fourier.jpg)、これを添付(フーリエ変換.png)のようにsin成分とcos成分に分解したいと考えています。

请先登录,再进行评论。

采纳的回答

Takuji Fukumoto
Takuji Fukumoto 2016-11-18
编辑:Takuji Fukumoto 2016-11-18
画像のプロットの理解については推測が入ってしまいますが、
fft()関数での離散フーリエ変換では
Wn=e^(−2πi)/nの項があり、複素平面で取り扱われています。
e^iθ =cosθ+ i sinθであらわせるので、
画像のプロットでは実軸の数値をcosin、虚軸の数値をsinと表示しているのかと推測します。
FFT演算後のyは複素数になっているので、 実数部と虚数部を取り出してそれぞれをプロットすればよいのではないでしょうか。
実数部を取り出す → real()
虚数部を取り出す → imag()
でできます。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Multirate Signal Processing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by