这个问题可能很简单,但我不清楚如何从 Matlab 文档中做到这一点。
我需要创建 W,一个酉矩阵
在复数形式中,W 的第 j,k 个条目 [W]_j,k 是:
[W]_j,k = 1/sqrt(n)exp^(2*pi*i*j*k/n) j,k = 1, 2, . , n
如何在 Matlab 中定义这样的矩阵,如果我能以极坐标形式做所有事情,生活会更轻松。
巴兹
这个问题可能很简单,但我不清楚如何从 Matlab 文档中做到这一点。
我需要创建 W,一个酉矩阵
在复数形式中,W 的第 j,k 个条目 [W]_j,k 是:
[W]_j,k = 1/sqrt(n)exp^(2*pi*i*j*k/n) j,k = 1, 2, . , n
如何在 Matlab 中定义这样的矩阵,如果我能以极坐标形式做所有事情,生活会更轻松。
巴兹
我认为这样的事情可以解决它:
N = 4;
[X Y] = meshgrid(1:N);
W = exp(1i*2*pi*X.*Y/N)/sqrt(N)
这是我使用的解决方案bsxfun
:
n=4;
fn=@(a,b)(1/sqrt(n)*exp(2*pi*1i*a*b/n));
bsxfun(fn,(1:n),(1:n)')
ans =
0.0000 + 0.5000i -0.5000 + 0.0000i -0.0000 - 0.5000i 0.5000 - 0.0000i
-0.5000 + 0.0000i 0.5000 - 0.0000i -0.5000 + 0.0000i 0.5000 - 0.0000i
-0.0000 - 0.5000i -0.5000 + 0.0000i 0.0000 + 0.5000i 0.5000 - 0.0000i
0.5000 - 0.0000i 0.5000 - 0.0000i 0.5000 - 0.0000i 0.5000 - 0.0000i
matlab中的虚数没有什么特别之处。但有一个建议:不要使用变量名 i 和 j。i 和 j 都是虚数单位。
它可以通过矩阵乘法然后(元素方式)求幂来解决:
1/sqrt(n)*exp(2*pi*1i/n*(1:n).'*(1:n))