How to calculate amplitude of each frequency?

28 ビュー (過去 30 日間)
Desiree 2019 年 8 月 21 日

I have an image and I have a code which gives the 2d fft of each color of the image. Now I need to calculate the amplitude of each frequency but I don’t know how to do it. Help is appreciated. Here’s my code so far:
im1=im;
im=im(:,:,1);
imagefft2=fft2(im);
a=im_fft2;
a(angle(imagefft2)<pi/2)=1;
figure();
im1(:,:,1)=abs(ifft2(a));
imshow(im,[]);

サインインしてコメントする。

採用された回答

AdamG2013468 2019 年 8 月 21 日
For a 1-D fft, the process is as follows:
fs = %arbitrary sample frequency
N = length(signal);
fbins = [(0:1/N:1-1/N)*fs]; %frequency bin vector for plotting (x axis)
calval = N/2; %for two-sided ffts, calval should just be N for one-sided
[fftdat] = fft(signal);
fftmag = abs(fftdat)/calval;
%to visualize that expected magnitude is correct
figure
hold on
plot(fbins, fftmag)
See if you have any luck with a similar approach for your 2-D fft.

5 件のコメント

Desiree 2019 年 8 月 21 日
I need to check the values of the amplitudes. If it is less than 1/8, then I should replace it by 0. How can I do that? Using if loop? For example if fttmag<1\8 , fftmag=0?
AdamG2013468 2019 年 8 月 21 日
One way,
for i = 1:length(fftmag)
if fftmag(i) < 1/8
fftmag(i) = 0
end
end
Desiree 2019 年 8 月 21 日
I’m really sorry, but still I cannot understand the relationship between your first answer for 1d fft and my question. In my case I don’t have a function, but an image. It has nothing similar to what I have

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by