I have a very simple test code for using the nufft function:
%% define signal
t = [-1.0/(2*pi),1.0/(2*pi)];
X = [1.0,1.0];
%% compute the NFFT
f_k = -10:10;
Y_k = nufft(X,t,f_k);
Accroding to the equation given in the documentation the result of this test should be , but the result is just a real constant across . How do I need to modify my program to deliver the correct result, or is this a bug?

 採用された回答

Paul
Paul 2023 年 3 月 27 日
編集済み: Paul 2023 年 3 月 27 日

0 投票

Hi Pieter,
I don't think that expression for Y(k) is correct. We can check symbolically
%% define signal
t = sym([-1.0,1.0]);
X = [1.0/(2*sym(pi)),1.0/(2*sym(pi))];
%% compute the NFFT
%f_k = sym(-10:10);
%Y_k = nufft(X,t,f_k)
syms f_k
% expression of Y(k) from the doc page for nufft
Yk = sum(X.*exp(-1j*2*sym(pi)*t*f_k))
Yk = 
Yk = simplify(Yk)
Yk = 
Subbing back in the values of f_k from the original problem
cos(2*pi*(-10:10))/pi
ans = 1×21
0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183
which matches the result from nufft.
nufft(double(X),double(t),-10:10)
ans = 1×21
0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183 0.3183

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeFourier Analysis and Filtering についてさらに検索

タグ

質問済み:

2023 年 3 月 27 日

編集済み:

2023 年 3 月 27 日

Community Treasure Hunt

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

Start Hunting!

Translated by