訊號的傅立葉變換(用matlab畫頻譜函式

時間 2021-05-07 20:01:38

1樓:我行我素

t=-1:0.01:1;

f=exp(-2.*abs(t));

ff=fft(f);

plot(abs(ff))

xlabel('頻率/hz')

ylabel('幅度')

如何用matlab程式設計求函式的傅立葉變換頻譜函式

2樓:幻想餘

fs = 128; % 取樣頻率

t = 1/fs; % 取樣時間

l = 256; % 訊號長度

t = (0:l-1)*t; % 時間

x = 5 + 7*cos(2*pi*15*t - 30*pi/180) + 3*cos(2*pi*40*t - 90*pi/180); %cos為底原始訊號

y = x + randn(size(t)); %新增噪聲

figure;

plot(t,y)

title('加噪聲的訊號')

xlabel('時間(s)')

n = 2^nextpow2(l); %取樣點數,取樣點數越大,分辨的頻率越精確,n>=l,超出的部分訊號補為0

y = fft(y,n)/n*2; %除以n乘以2才是真實幅值,n越大,幅值精度越高

f = fs/n*(0:1:n-1); %頻率

a = abs(y); %幅值

p = angle(y); %相值

figure;

subplot(211);plot(f(1:n/2),a(1:n/2)); %函式fft返回值的資料結構具有對稱性,因此我們只取前一半

title('幅值頻譜')

xlabel('頻率(hz)')

ylabel('幅值')

subplot(212);plot(f(1:n/2),p(1:n/2));

title('相位譜頻')

xlabel('頻率(hz)')

ylabel('相位')

對一幅影象傅立葉變換後,顯示其頻譜圖的matlab語句?

3樓:綉乞群群

f = imread('tire.tif');

imshow(f)

f = fft2(f); % 傅氏變換baifc = fftshift(f); % 中心化fm = abs(fc); % 取模

figure, imshow(fm, [ ])figure, imshow(log(1+dufm), [ ]) % 對數變換,增強顯示視覺效zhi果g = ifftshift(fc); % 對fc去中心化g = ifft2(g); % 對g逆變dao換

figure, imshow(g) % 原影象專你要注意整個流程,f ---> f ----> fc , 所以要屬回去的話當然是fc --- > g --- > g,就是先對fc去中心化得到g,再對g逆變換得到g,這樣才行。

對一幅影象傅立葉變換後,顯示其頻譜圖的matlab語句?

4樓:匿名使用者

f = imread('tire.tif');

imshow(f)

f = fft2(f); % 傅氏bai變換fc = fftshift(f); % 中心化dufm = abs(fc); % 取模zhifigure, imshow(fm, [ ])figure, imshow(log(1+fm), [ ]) % 對數變換,增強顯示視覺dao效內果

g = ifftshift(fc); % 對fc去中心化g = ifft2(g); % 對g逆變換figure, imshow(g) % 原影象你要注意整個流容程,f ---> f ----> fc , 所以要回去的話當然是fc --- > g --- > g,就是先對fc去中心化得到g,再對g逆變換得到g,這樣才行。

5樓:工科天蠍男

很簡單。因為進抄行了襲傅氏變換以後影象上每點的bai

值都成了du複數,取abs(即取模值)zhi後dao才能顯示為影象。但是問題是進行變換再取模值後數字有時會變得非常大,拿常用的資料型別uint8(即8位無符號整型數)為例,所能表示的範圍僅為0~255,如果資料超過255,在顯示影象時系統自動把資料變成255,所以如果有很多資料都超過255,即使這些資料之間差別也蠻大,傅立葉變換顯示的影象只會白茫茫一片(255代表白色),看不出差異來。所以需要對這些資料進行處理,常用的就是取對數(log),將很大的資料變成小一些的資料,落在0~255之間,能夠準確地表示在影象上,更直觀地發現資料之間的差異,也是進行傅氏變換的意義所在,區分高頻分量和低頻分量。

6樓:濫情空心

你好,請問解決了如何獲得影象的頻率分佈圖了嗎,最近也在做濾波,想知道具體怎麼做呀

使用matlab畫正弦函式的傅立葉變換頻譜圖**?

7樓:匿名使用者

直接進行傅立葉變換,然後輸出此函式的影象就可以了啊。 比如: n=1:1:30 x=sin(2*n) y=fft(x) stem(y)!

matlab 怎麼用傅立葉變換出頻譜圖

8樓:依善枋

i = imread(『目標檔案的地址』);

%轉換為灰度圖

if size(i, 3) > 1

g = im2double(rgb2gray(i));

else

g = im2double(i);

endf = fftshift(fft2(g)); 將影象中心移到中間

imf = log10(abs(f)+1);

imshow(imf, );

初學者 想用matlab匯入一段音訊,然後用快速傅立葉變換得到其頻譜並畫出影象

matlab中如何對一組資料進行fft變換後得到頻譜圖??

9樓:用著追她

1、直接對其使用來ceil函式,源

可以向上取整:即大於等於給定數bai據的最du小整數。

2、使用zhifloor函式可以進行向下取dao整。如圖,將矩陣a中的每個元素取小於等於該元素的最大整數。

3、使用fix函式則可以去除小數部分。對於大於0的元素相當於floor,對於小於0的元素相當於ceil。

4、使用round函式可以把資料四捨五入到最近的整數。

5、round還可以帶有第二個引數,精確到位數。負數表示四捨五入到小數點左側多少位,正數表示小數點右側。0表示精確到個位,預設。

6、當round帶有第三個引數'significant'時,第二個參數列示精確位數。如圖表示每個元素均取2位有效數字。

10樓:手機使用者

將那個i輸出線分0一t支q出來輸入i到一b個kto file的模組就好了d,如果要轉到execl中2的話將他們連結就好e┳

用matlab 傅立葉變換之後的三維頻譜圖怎麼畫 10

11樓:

一個一維的序列fft變換後只有二維頻譜,也就是隻有兩個變數,怎麼可能可以畫三維頻譜呢?