- Matlab 教程
- MATLAB - 首頁
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 環境設定
- MATLAB - 編輯器
- MATLAB - 線上版
- MATLAB - 工作區
- MATLAB - 語法
- MATLAB - 變數
- MATLAB - 命令
- MATLAB - 資料型別
- MATLAB - 運算子
- MATLAB - 日期和時間
- MATLAB - 數字
- MATLAB - 隨機數
- MATLAB - 字串和字元
- MATLAB - 文字格式化
- MATLAB - 時間表
- MATLAB - M 檔案
- MATLAB - 冒號表示法
- MATLAB - 資料匯入
- MATLAB - 資料匯出
- MATLAB - 資料歸一化
- MATLAB - 預定義變數
- MATLAB - 決策
- MATLAB - 決策語句
- MATLAB - if 語句
- MATLAB - if-else 語句
- MATLAB - if-elseif-else 語句
- MATLAB - 巢狀 if 語句
- MATLAB - switch 語句
- MATLAB - 巢狀 switch
- MATLAB - 迴圈
- MATLAB - 迴圈
- MATLAB - for 迴圈
- MATLAB - while 迴圈
- MATLAB - 巢狀迴圈
- MATLAB - break 語句
- MATLAB - continue 語句
- MATLAB - end 語句
- MATLAB - 陣列
- MATLAB - 陣列
- MATLAB - 向量
- MATLAB - 轉置運算子
- MATLAB - 陣列索引
- MATLAB - 多維陣列
- MATLAB - 相容陣列
- MATLAB - 分類陣列
- MATLAB - 元胞陣列
- MATLAB - 矩陣
- MATLAB - 稀疏矩陣
- MATLAB - 表格
- MATLAB - 結構體
- MATLAB - 陣列乘法
- MATLAB - 陣列除法
- MATLAB - 陣列函式
- MATLAB - 函式
- MATLAB - 函式
- MATLAB - 函式引數
- MATLAB - 匿名函式
- MATLAB - 巢狀函式
- MATLAB - 返回語句
- MATLAB - 空函式
- MATLAB - 區域性函式
- MATLAB - 全域性變數
- MATLAB - 函式控制代碼
- MATLAB - 濾波器函式
- MATLAB - 階乘
- MATLAB - 私有函式
- MATLAB - 子函式
- MATLAB - 遞迴函式
- MATLAB - 函式優先順序順序
- MATLAB - map 函式
- MATLAB - mean 函式
- MATLAB - end 函式
- MATLAB - 錯誤處理
- MATLAB - 錯誤處理
- MATLAB - try...catch 語句
- MATLAB - 除錯
- MATLAB - 繪圖
- MATLAB - 繪圖
- MATLAB - 繪製陣列
- MATLAB - 繪製向量
- MATLAB - 條形圖
- MATLAB - 直方圖
- MATLAB - 圖形
- MATLAB - 二維線圖
- MATLAB - 三維圖
- MATLAB - 格式化繪圖
- MATLAB - 對數座標軸繪圖
- MATLAB - 繪製誤差條
- MATLAB - 繪製三維等高線
- MATLAB - 極座標圖
- MATLAB - 散點圖
- MATLAB - 繪製表示式或函式
- MATLAB - 繪製矩形
- MATLAB - 繪製頻譜圖
- MATLAB - 繪製網格曲面
- MATLAB - 繪製正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 線性插值
- MATLAB - 二維陣列插值
- MATLAB - 三維陣列插值
- MATLAB - 多項式
- MATLAB - 多項式
- MATLAB - 多項式加法
- MATLAB - 多項式乘法
- MATLAB - 多項式除法
- MATLAB - 多項式的導數
- MATLAB - 變換
- MATLAB - 變換函式
- MATLAB - 拉普拉斯變換
- MATLAB - 拉普拉斯濾波器
- MATLAB - 高斯-拉普拉斯濾波器
- MATLAB - 逆傅立葉變換
- MATLAB - 傅立葉變換
- MATLAB - 快速傅立葉變換
- MATLAB - 二維逆餘弦變換
- MATLAB - 向座標軸新增圖例
- MATLAB - 面向物件
- MATLAB - 面向物件程式設計
- MATLAB - 類和物件
- MATLAB - 函式過載
- MATLAB - 運算子過載
- MATLAB - 使用者定義類
- MATLAB - 複製物件
- MATLAB - 代數
- MATLAB - 線性代數
- MATLAB - 高斯消元法
- MATLAB - 高斯-約旦消元法
- MATLAB - 簡化行階梯形
- MATLAB - 特徵值和特徵向量
- MATLAB - 積分
- MATLAB - 積分
- MATLAB - 二重積分
- MATLAB - 梯形法則
- MATLAB - 辛普森法則
- MATLAB - 其他
- MATLAB - 微積分
- MATLAB - 微分
- MATLAB - 矩陣的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用資源
- MATLAB - 快速指南
- MATLAB - 有用資源
- MATLAB - 討論
MATLAB - 逆傅立葉變換
MATLAB 中的逆傅立葉變換是一個函式,它接收訊號的頻域表示,並將其轉換回時域表示。它是傅立葉變換的反向過程,傅立葉變換將時域訊號轉換為其頻域表示。
在 MATLAB 中,逆傅立葉變換使用 `ifft` 函式(對於一維訊號)和 `ifft2` 函式(對於二維訊號)計算。逆傅立葉變換的結果是代表原始時域訊號的訊號。
逆傅立葉變換在訊號處理、影像處理和通訊中非常有用,它用於分析和處理頻域中的訊號。它允許對頻域中表示的訊號執行諸如濾波、壓縮和調製之類的操作。
使用 `ifft()` 進行逆傅立葉變換
MATLAB 中的 `ifft()` 函式計算序列的逆離散傅立葉變換 (IDFT)。它接收表示頻域訊號的一維或二維陣列(例如,使用 `fft()` 函式獲得),並返回相應的時域訊號。
逆離散傅立葉變換是離散傅立葉變換 (DFT) 的逆過程。它將訊號的頻域表示轉換回時域表示。這在需要在頻域中分析或處理訊號,然後將其轉換回時域以進行進一步處理或解釋的應用中非常有用。
語法
X = ifft(Y) X = ifft(Y,n) X = ifft(Y,n,dim) X = ifft(___,symflag)
語法解釋
X = ifft(Y) 使用快速演算法計算 Y 的逆傅立葉變換。結果 X 與 Y 大小相同。
- 如果 Y 是向量,`ifft(Y)` 返回向量的逆變換。
- 如果 Y 是矩陣,`ifft(Y)` 返回矩陣每一列的逆變換。
- 如果 Y 是多維陣列,`ifft(Y)` 將沿第一個非單一維度上的值視為向量,並返回每個向量的逆變換。
X = ifft(Y,n) - 計算 Y 的逆傅立葉變換,但在執行變換之前,用零填充 Y 以使其長度為 n。
X = ifft(Y,n,dim) - 沿指定的維度 dim 計算 Y 的逆傅立葉變換,用零填充以沿該維度使長度為 n。例如,如果 Y 是矩陣,`ifft(Y,n,2)` 計算每一行的 n 點逆變換。
X = ifft(___,symflag) - 允許您指定 Y 的對稱性以及任何之前的輸入引數組合。例如,`ifft(Y,'symmetric')` 將 Y 視為共軛對稱。
MATLAB 中逆傅立葉變換的示例
讓我們看看上面提到的每種語法的示例。
示例 1:使用 `ifft(Y)` 計算逆傅立葉變換
我們的程式碼如下:
% Generate a signal
t = linspace(0, 1, 1000); % Time vector
f = 5; % Frequency of the signal
signal = sin(2*pi*f*t);
% Compute the Fourier Transform
Y = fft(signal);
% Compute the Inverse Fourier Transform
X = ifft(Y);
% Plot the original and reconstructed signals
subplot(2,1,1);
plot(t, signal);
title('Original Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(2,1,2);
plot(t, real(X)); % Display real part of X
title('Reconstructed Signal');
xlabel('Time');
ylabel('Amplitude');
在這個例子中:
- 我們首先生成一個正弦訊號 signal。
- 然後我們使用 `fft()` 計算訊號的傅立葉變換,結果為 Y。
- 接下來,我們使用 `ifft(Y)` 計算逆傅立葉變換,理想情況下應該重建原始訊號。
- 最後,我們繪製原始訊號和重建訊號以進行比較。
程式碼執行後,我們得到以下輸出:
示例 2:計算具有零填充的逆傅立葉變換
我們的程式碼如下:
% Generate a signal
t = linspace(0, 1, 1000); % Time vector
f = 5; % Frequency of the signal
signal = sin(2*pi*f*t);
% Compute the Fourier Transform
Y = fft(signal);
% Compute the Inverse Fourier Transform with zero padding
n = 2000; % Length to pad
X = ifft(Y, n);
% Plot the original and padded signals
subplot(2,1,1);
plot(t, signal);
title('Original Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(2,1,2);
t_padded = linspace(0, 1, n); % Time vector for padded signal
plot(t_padded, real(X)); % Display real part of X
title('Padded Signal');
xlabel('Time');
ylabel('Amplitude');
此示例類似於前一個示例,但增加了零填充。
- 在計算訊號的傅立葉變換之後,我們使用 `ifft(Y, n)` 計算具有零填充到長度 n 的逆傅立葉變換。
- 零填充可用於提高訊號頻域表示的解析度。
執行後的輸出為:
示例 3
沿特定維度計算具有零填充的逆傅立葉變換
我們的程式碼是:
% Create a 2D matrix
A = magic(4); % Magic square matrix
disp('Original Matrix:');
disp(A);
% Compute the Fourier Transform along the columns
Y = fft(A, [], 2);
% Compute the Inverse Fourier Transform along the columns with zero padding
n = 8; % Length to pad
X = ifft(Y, n, 2);
% Display the original and padded matrices
disp('Original Matrix after IFFT along columns with zero padding:');
disp(X);
在這個例子中:
- 我們從一個 4x4 的幻方矩陣 A 開始。
- 然後我們使用 `fft(A, [], 2)` 計算 A 沿列的傅立葉變換,結果為 Y。
- 接下來,我們使用 `ifft(Y, n, 2)` 計算沿列具有零填充到長度 n 的逆傅立葉變換。
- 結果 X 是一個 4x8 的矩陣,其中每一行都是原始矩陣 A 中對應行的 n 點逆變換。
執行後的輸出如下:
>> % Create a 2D matrix
A = magic(4); % Magic square matrix
disp('Original Matrix:');
disp(A);
% Compute the Fourier Transform along the columns
Y = fft(A, [], 2);
% Compute the Inverse Fourier Transform along the columns with zero padding
n = 8; % Length to pad
X = ifft(Y, n, 2);
% Display the original and padded matrices
disp('Original Matrix after IFFT along columns with zero padding:');
disp(X);
Original Matrix:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Original Matrix after IFFT along columns with zero padding:
Columns 1 through 4:
8.0000 + 0i 4.2500 + 4.7426i 1.0000 + 0i 4.2500 - 0.1464i
2.5000 + 0i 4.2500 - 1.9142i 5.5000 + 0i 4.2500 + 0.1464i
4.5000 + 0i 4.2500 + 0.9142i 3.5000 + 0i 4.2500 + 0.1464i
2.0000 + 0i 4.2500 - 3.7426i 7.0000 + 0i 4.2500 - 0.1464i
Columns 5 through 8:
1.5000 + 0i 4.2500 - 3.7426i 6.5000 + 0i 4.2500 - 0.8536i
5.0000 + 0i 4.2500 + 0.9142i 4.0000 + 0i 4.2500 + 0.8536i
3.0000 + 0i 4.2500 - 1.9142i 6.0000 + 0i 4.2500 + 0.8536i
7.5000 + 0i 4.2500 + 4.7426i 0.5000 + 0i 4.2500 - 0.8536i
>>
示例 4:計算具有指定對稱性的逆傅立葉變換
我們的程式碼如下:
% Create a complex signal
t = linspace(0, 1, 1000); % Time vector
f = 5; % Frequency of the signal
signal = exp(1i*2*pi*f*t); % Complex exponential signal
% Compute the Fourier Transform
Y = fft(signal);
% Compute the Inverse Fourier Transform with symmetric treatment
X = ifft(Y, 'symmetric');
% Plot the real part of the original and reconstructed signals
subplot(2,1,1);
plot(t, real(signal));
title('Original Signal (Real Part)');
xlabel('Time');
ylabel('Amplitude');
subplot(2,1,2);
plot(t, real(X)); % Display real part of X
title('Reconstructed Signal (Real Part)');
xlabel('Time');
ylabel('Amplitude');
- 在這個例子中,我們使用帶有 'symmetric' 標誌的 `ifft` 函式來指定輸入訊號的對稱性。
- 我們首先建立一個復指數訊號 signal 並計算其傅立葉變換。
- 透過使用 `ifft(Y, 'symmetric')`,我們計算具有對稱處理的逆傅立葉變換,這假設輸入訊號是共軛對稱的。
- 繪製原始訊號和重建訊號的實部以進行比較。
執行後我們得到的輸出如下:
使用 `ifft2()` 進行二維逆傅立葉變換
使用 `ifft2()` 進行二維逆傅立葉變換是一個 MATLAB 函式,它計算二維矩陣的逆傅立葉變換。它是二維傅立葉變換的逆運算,將影像的頻域表示轉換回空間域。
此函式在影像處理中特別有用,用於影像重建、濾波和恢復等任務。它接收表示頻域影像的二維矩陣,並返回相應的空間域影像。
語法
X = ifft2(Y) X = ifft2(Y,m,n) X = ifft2(___,symflag)
語法解釋
X = ifft2(Y) - 使用快速演算法計算矩陣 Y 的二維逆傅立葉變換。如果 Y 是多維陣列,`ifft2` 將計算高於 2 的每個維度的二維逆變換。輸出 X 與 Y 大小相同。
X = ifft2(Y,m,n) − 透過截斷或用零填充 Y 來將其大小調整為 m×n 矩陣,然後再計算逆變換。輸出 X 也是 m×n 的。如果 Y 是多維陣列,則 ifft2 會重塑 Y 的前兩個維度以匹配 m 和 n。
X = ifft2(___,symflag) − 除了任何之前的輸入引數組合之外,還可以指定 Y 的對稱性。例如,ifft2(Y,'symmetric') 將 Y 視為共軛對稱。
讓我們根據上面提到的語法,來看幾個例子。
示例 1:計算二維逆傅立葉變換
我們的程式碼如下:
% Compute the 2D Fourier Transform
Y = fft2(A);
% Compute the Inverse Fourier Transform
X = ifft2(Y);
% Display the original and reconstructed matrices
disp('Original Matrix:');
disp(A);
disp('Reconstructed Matrix:');
disp(X);
- 此示例演示如何使用 ifft2() 計算矩陣 Y 的二維逆傅立葉變換。
- 我們從一個簡單的 3×3 矩陣 A 開始。
- 然後,我們使用 fft2() 計算 A 的二維傅立葉變換,結果為 Y。
- 最後,我們使用 ifft2(Y) 計算逆傅立葉變換,理想情況下應該重建原始矩陣 A。
- 顯示原始矩陣和重建矩陣以進行比較。
執行後,我們得到:
Original Matrix:
1 2 3
4 5 6
7 8 9
Reconstructed Matrix:
1 2 3
4 5 6
7 8 9
示例 2:調整二維逆傅立葉變換的大小
我們的程式碼如下:
% Create a simple 3x3 matrix
A = [1 2 3; 4 5 6; 7 8 9];
% Compute the 2D Fourier Transform
Y = fft2(A);
% Adjust the size and compute the Inverse Fourier Transform
m = 4; % Desired number of rows
n = 5; % Desired number of columns
X = ifft2(Y, m, n);
% Display the original and adjusted-size matrices
disp('Original Matrix:');
disp(A);
disp('Adjusted-size Matrix:');
disp(X);
- 此示例說明如何使用 ifft2(Y,m,n) 在計算逆變換之前調整二維矩陣 Y 的大小。
- 我們從一個簡單的 3×3 矩陣 A 開始。
- 我們使用 fft2() 計算 A 的二維傅立葉變換,結果為 Y。
- 然後,我們使用 ifft2(Y, m, n) 將 Y 的大小調整為 4×5 矩陣(透過用零填充),並計算逆傅立葉變換,結果為 X。
- 顯示原始矩陣和調整大小後的矩陣以進行比較。
執行後,我們得到以下輸出:
Original Matrix: 1 2 3 4 5 6 7 8 9 Adjusted-size Matrix: Columns 1 through 4: 0.4500 + 0i 0.9653 - 0.2010i 0.8126 - 0.0635i 1.2124 - 0.2270i 2.0853 - 0.2853i 2.6006 - 0.4863i 2.4479 - 0.3488i 2.8477 - 0.5123i 1.8000 - 0.7794i 2.3153 - 0.9804i 2.1626 - 0.8429i 2.5624 - 1.0064i 2.8647 + 1.0647i 3.3800 + 0.8637i 3.2273 + 1.0012i 3.6271 + 0.8377i Column 5: 1.0597 + 0.4915i 2.6950 + 0.2062i 2.4097 - 0.2879i 3.4744 + 1.5562i
示例 3:指定二維逆傅立葉變換的對稱性
我們的程式碼如下:
% Create a 2D matrix with complex values
A = [1+2i, 3-1i, 5+4i; -2+1i, 6-3i, 8+7i; 9-2i, 4+5i, -1-6i];
% Compute the 2D Fourier Transform
Y = fft2(A);
% Compute the Inverse Fourier Transform with symmetric treatment
X = ifft2(Y, 'symmetric');
% Display the original and reconstructed matrices
disp('Original Matrix:');
disp(A);
disp('Reconstructed Matrix:');
disp(X);
- 此示例演示如何使用 ifft2(___,symflag) 在計算逆變換之前指定輸入矩陣 Y 的對稱性。
- 我們從一個包含複數值的 3×3 矩陣 A 開始。
- 我們使用 fft2() 計算 A 的二維傅立葉變換,結果為 Y。
- 透過使用 ifft2(Y, 'symmetric'),我們計算 Y 的逆傅立葉變換,並進行對稱處理,假設 Y 是共軛對稱的。
- 顯示原始矩陣和重建矩陣以進行比較。
執行後,我們得到的輸出是:
Original Matrix: 1.0000 + 2.0000i 3.0000 - 1.0000i 5.0000 + 4.0000i -2.0000 + 1.0000i 6.0000 - 3.0000i 8.0000 + 7.0000i 9.0000 - 2.0000i 4.0000 + 5.0000i -1.0000 - 6.0000i Reconstructed Matrix: -0.3472 5.6943 8.2717 -9.3131 7.9245 8.7698 15.3509 1.6906 -5.0415