自編FFT IFFT函式 基於MATLAB

2021-09-28 12:55:38 字數 1440 閱讀 5337

fft函式,純屬個人學習興趣,存在的問題,希望廣大學者指正。

function y = myfft(x,n)

%輸入引數 x:輸入訊號

% n: fft的取樣點數

%輸出引數 y:fft結果,即頻域資訊

%判斷訊號的長度

if x對應於上述fft函式的ifft函式

function x = myifft(y,n)

%輸入引數 y:fft結果,即頻域資訊

% n: fft的取樣點數

%輸出引數 x:ifft後對應的時域資訊

x = zeros(1,n); %初始化ifft結果的儲存變數

for n = 1:n

for k = 1:n

x = real(1/n*y(n)*exp(1i*2*pi*(k-1)*(n-1)/n)); %進行ifft轉換

x(k) = x(k)+x; %將每次結果累加,得到最終的結果

endend

驗證:

clc

clear

% 匯入訊號

load('eeg_signal_test.mat');

signal = eeg_signal_test; %原始訊號

fs = 160; %取樣頻率

n = 256; %fft的取樣點數

% 訊號預處理

signal = signal(1:n)';

signal_nodc = signal-mean(signal);% 通過減去平均值來消除直流分量

%fft變換

eeg_fft = fft(signal_nodc,n);

eeg_fft_abs = abs(eeg_fft);

eeg_myfft = myfft(signal_nodc,n);

eeg_myfft_abs = abs(eeg_myfft);

eeg_myfft_abs = eeg_myfft_abs';

%ifft變換

eeg_ifft = ifft(eeg_fft,n);

eeg_myifft = myifft(eeg_myfft,n);

eeg_myifft = eeg_myifft';

plot(signal); hold on; plot(eeg_ifft)

驗證結果截圖

自編基於jQuery實現分頁外掛程式

function params pagesize 每頁顯示資料條數 params currentpage 當前頁碼 params data 查詢時的資料 json格式 params pageshowdivid 顯示分頁內容的div的id屬性值 params contentmark 內容資訊標記 pa...

自編函式解決pathinfo 函式處理中文問題

今天寫程式時遇到乙個小問題,pathinfo在處理中文檔名時出現的問題,如果中文在字首就出現獲取的filename為空,英文在字首後面是中文的則能獲取到。如下圖 於是自己寫了個函式代替,如下 複製 如下 function path info filepath 這樣問題就解決了 本文標題 自編函式解決...

自編兩種濾波器結果比較函式 基於MATLAB

該函式主要作用是,對同一段訊號,用兩種不同的濾波器進行濾波處理,然後比較兩者在頻域的結果。通過比較,可以選擇合適的濾波器。這個函式中是對butter和fir兩種進行了比較,讀者要是想對比其他濾波器,或者同時比較三種及以上濾波器,只需要對 稍加修改,就可以滿足需求,這裡不加贅述。還有一點,讀者要是想輸...