clear;
%訊號fs=1000;%?取樣頻率?
t=1/fs;%? 取樣時間間隔??
n=1024;%? 訊號長度??
t=(0:n-1)*t;%?時間點向量
x=sin(2*pi*50*t)+0.7*sin(2*pi*200*t);
figure(1)
plot(t,x)
%係數矩陣
m=log2(n);
xishu=zeros(n,m+1);
%計算旋轉因子
k=0:1:n-1;
w=exp(-1i*2*pi/n);
wk=w.^k;
%先碼位倒置得到序號
xuhao=zeros(n,2);
xuhao(:,1)=0:1:n-1;
for i=1:1:n
xuhao(i,2)=bin2dec(fliplr(dec2bin(xuhao(i,1),m)));
end%得到序號後變換位置
x_=zeros(1,n);
for i=1:1:n
x_(i)=x(xuhao(i,2)+1);
endxishu(:,1)=x_;
%迴圈m次,計算得到結果
for i=0:1:m-1%i為級數
step=2^i;
%計算每級組數
zushu=n/2^(i+1);
%每次計算之前對係數進行處理,也是分組,每組的後半組*wk
for j=1:1:zushu%一組一組的來
for k=(n/zushu/2+1):1:n/zushu
xishu((j-1)*(n/zushu)+k,i+1)=xishu((j-1)*(n/zushu)+k,i+1)*wk(1+2^(m-i-1)*(k-((n/zushu/2+1))));
endend
for j=1:1:zushu%一組一組的來
for k=1:1:n/zushu/2
%計算向下的
xishu((j-1)*(n/zushu)+k,i+2)=xishu((j-1)*(n/zushu)+k,i+1)+xishu((j-1)*(n/zushu)+k+step,i+1);
endfor k=(n/zushu/2+1):1:n/zushu
%計算向上的
xishu((j-1)*(n/zushu)+k,i+2)=xishu((j-1)*(n/zushu)+k-step,i+1)-xishu((j-1)*(n/zushu)+k,i+1);
endend
endfigure(2)
f=1/(n*t)*(0:n/2);
plot(f,2*abs(xishu(1:n/2+1,m+1))/n)
基2FFT時間抽取和頻域抽取演算法比較
基二fft演算法 include math.h include stdio.h struct compx compx struct compx ee struct compx b1,struct compx b2 複數相乘 void fft struct compx xin,int n 求出m為lo...
DB2時間函式
獲取當前日期 select current date from sysibm.sysdummy1 values current date 獲取當前日期 select current time from sysibm.sysdummy1 values current time 獲取當前時間戳 sele...
Redis 事件 2 時間事件
redis時間事件分為以下兩類 1.定時事件 程式在指定時間執行一次。2.週期性事件 程式每隔指定時間執行一次。時間事件的屬性 1.id 伺服器為時間事件建立的全域性唯一id,id號從小到大遞增。2.when 毫秒精度的unix時間戳,記錄時間事件的到達時間。3.timeproc 時間事件處理器,乙...