matlab - 如何证明二维DFT的信号可分离性?软件

标签 matlab 2d fft dft

我尝试使用可分离为 2 个一维向量的二维矩阵来证明二维傅里叶变换的信号属性的可分离性。 地点:

f(x,y) = f(x)*f(y)

那么 F(u,v) = F(u)*F(v)

使用以下代码:

% Separabilty of signal 
H = [-1,2,-1;-2,4,-2;-1,2,-1];
b3 = fft2(H)
Hx = [-1,2,-1];
Hy = [1,2,1]';
c2 = fft(Hy)*fft(Hx')'
if norm(vecnorm(b3-c2)) < 1e-5
    "same"
else
    "different"
end

但是,尽管数字是正确的,但它们在矩阵中的顺序发生了变化。我不明白怎么了。

最佳答案

错误在这里

c2 = fft(Hy)*fft(Hx')'

为什么要应用双转置 fft(Hx')'

H = Hy*Hx

然后

c2 = fft(Hy)*fft(Hx)

请注意,在 matlab 中,操作 ' 执行复数共轭转置,这就是为什么 fft(Hx) 不等于 fft(Hx' )',因为第二次换位改变了虚部的符号。

关于matlab - 如何证明二维DFT的信号可分离性?软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65344702/

相关文章:

java - 将FFT应用于java中的录音

java - 如何使用具有可变正弦波大小和整数而不是短路的 FFT 代码?

c++ - cuFFT 的 NaN 问题

matlab - 基于matlab中条件的每个单元格操作

database - 将 MongoDB 数据库连接到 MATLAB 时出错(无法加载消息目录 'mongodb:mongodb')

android - 使用动画绘制形状或字母。2D 或 3D 或任何简单的程序?

performance - OpenGL 平铺渲染 : most efficient way?

arrays - MATLAB:大于 N 的组的二进制数组计数

matlab - 如何使堆叠条形图仅以白色和黑色可读

java - 在 Java 中水平、垂直和对角线(两个方向)搜索二维数组