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變換後只有二維頻譜,也就是隻有兩個變數,怎麼可能可以畫三維頻譜呢?