八度相当于Matlab的“ freqspace”函数吗?

时间:2018-09-03 08:28:19

标签: matlab octave

在Matlab中,我们可以编写

[u, v] = freqspace(size(I),'meshgrid');

Octave与Matlab的“ freqspace”函数等效吗?

1 个答案:

答案 0 :(得分:2)

您已经发现,freqspace未在Octave中实现:

>> help freqspace
error: help: the 'freqspace' function is not yet implemented in Octave

Please read <http://www.octave.org/missing.html> to learn how you can
contribute missing functionality.

查看documentation page的MATLAB函数,您将得到:

  

语法

[f1,f2] = freqspace(n)
[f1,f2] = freqspace([m n])
[x1,y1] = freqspace(...,'meshgrid')
f = freqspace(N)
f = freqspace(N,'whole')
     

说明 freqspace返回等距频率响应的隐含频率范围。 freqspace在创建时很有用   各种一维和二维所需的频率响应   应用程序。

     

[f1,f2] = freqspace(n)返回二维频率向量   f1f2表示n×n矩阵。

     

对于n为奇数,f1f2均为[-n+1:2:n-1]/n

     

对于nf1f2均为[-n:2:n-2]/n

     

[f1,f2] = freqspace([m n])返回二维频率   f1f2矩阵的向量mn

     

[x1,y1] = freqspace(...,'meshgrid')等同于

[f1,f2] = freqspace(...);
[x1,y1] = meshgrid(f1,f2);
     

f = freqspace(N)返回一维频率向量f   假设N围绕单位圆均匀分布。甚至N   或奇数,f(0:2/N:1)。因此,即使对于N,freqspace也会返回   (N+2)/2分。对于N个奇数,它将返回(N+1)/2分。

     

f = freqspace(N,'whole')返回N在点周围均匀分布的点   整个单位圆。在这种情况下,f0:2/N:2*(N-1)/N

基于此,我组合了以下功能。尽管它很快完成,但并没有涵盖所有案例,但是实现的案例在Octave中似乎运行良好。希望这应该给您一个入门的想法:

function varargout = freqspace(varargin)

  if nargin==1 && nargout==2 % [f1,f2] = freqspace(n)
    n = varargin{1};

    if mod(n,2)==0 % n is even
      varargout{1} = [-n:2:n-2]/n;
      varargout{2} = [-n:2:n-2]/n;
    else % n is odd
      varargout{1} = [-n+1:2:n-1]/n;
      varargout{2} = [-n+1:2:n-1]/n;
    end

  elseif nargin==1 && nargout==1 % f = freqspace(N)
    N = varargin{1};
    varargout{1} = (0:2/N:1);

  elseif nargin==2 && nargout==1 % f = freqspace(N,'whole')
    N = varargin{1};
    if ~ischar(varargin{2}) || ~strcmpi(varargin{2},'whole')      
      error('The correct syntax is f = freqspace(N,''whole'')');
    else
      varargout{1} = 0:2/N:2*(N-1)/N;
    end

  else  
    disp('Case not yet implemented.')
    return

  end
相关问题