对非平方矩阵推广这个matlab代码

时间:2011-05-11 15:51:49

标签: matlab matrix fft

我正在使用matlab中的一些傅里叶变换代码,并且遇到了以下内容:

xx = meshgrid(1:N);
% Center on DC
xx = xx - dcN;
% normalize dynamic range from -1 to 1
xx = xx./max(abs(xx(:)));
% form y coordinate from negative transpose of x coordinate (maintains symmetry about DC)
yy = -xx';
% compute the related radius of the x/y coordinates centered on DC
rr = sqrt(xx.^2 + yy.^2);

如何对非平方矩阵进行推广?这段代码假设我的矩阵是方形的,因此dcN是方阵的中心(换句话说,11x11,dcN = 6)。

当转置为非方矩阵时,数学不能解决该yy变量。

我试图弄明白我是否可以制作一个从上到下而不是从左到右的网格网格 - 但我还是没能想出来。

由于

2 个答案:

答案 0 :(得分:1)

  

我试图弄明白我是否可以   使网格从“顶部到”   底部“而不是从左到右 - 但是   我还没弄明白   任

>> N=5

N =

     5

>> rot90(meshgrid(N:-1:1))

ans =

     1     1     1     1     1
     2     2     2     2     2
     3     3     3     3     3
     4     4     4     4     4
     5     5     5     5     5

答案 1 :(得分:0)

根据你的问题,我猜你想要找到rr,即矩阵中任何元素与中心的距离。

如果你想要这个M-by-N阵列,你可以做以下

%# note that using meshgrid instead of ndgrid will swap xx and yy
[xx,yy] = ndgrid(-(M-1)/2:(M-1)/2,-(N-1)/2:(N-1)/2);

%# normalize to the max of xx,yy
nrm = max((M-1)/2,(N-1)/2);
xx = xx./nrm; 
yy = yy./nrm;

rr = sqrt(xx.^2+yy.^2)