FFTのコマンドを用いない、DFTのアルゴリズムでのプログラミングについて
Show older comments
初めまして。
私は、現在MATLAB上でFFTコマンドを用いずにDFTのプログラムを作成中です。
ある20000個のデータを解析したいのですが、プログラムがうまく実行できません。
以下が作成中のプログラムとなります。
使用しているDFTの定義式は、
(k=0,1,2,…,N-1)です。
clear;
close all;
filename1 ='C.csv';
sheet=1;
xlRange='A:A';
A=xlsread(filename1,sheet,xlRange);
N=20000;
for k=0:1:N-1
syms I
S1=symsum(A(I+1,1)*exp(-1j*(2*pi/N)*k*I),I,0,N-1);
ck=(1/N)*S1;
rck=real(ck);
end
aCk=abs(rck);
plot(aCk)
このプログラムを実行した結果、
エラー: sym/subsindex (line 769)
インデックス付けまたは関数定義が無効です。関数を定義する場合は、必ず引数をシンボリッ
ク変数にして、関数の本体を SYM 式にしてください。インデックス付けの場合、入力は数
値、論理値または ':' でなければなりません。
エラー: DFT (line 16)
S1=symsum(A(I+1,1)*exp(-1j*(2*pi/N)*k*I),I,0,N-1);
と表示されました。
DFTを行い、振幅スペクトルおよび位相スペクトルをグラフで表示するにはどうしたらよいでしょうか。
皆様のお力を貸していただければと思います。
なお、MATLABのプログラム技術や知識はあまりないので、丁寧に教えてくださると助かります。
1 Comment
michio
on 27 Feb 2019
質問の投稿、ありがとうございました。
回答の内容で課題や疑問が解決されましたら、
ぜひ「この回答を採用」ボタンのクリックをお願いいたします。
Accepted Answer
More Answers (0)
Categories
Find more on フーリエ解析とフィルター処理 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!