2016-04-23 75 views
0

我要绘制一个给定的波束形成器w的空间响应,所述方向与阵列响应a(theta)源的theta的函数,即嵌套函数和生成的曲线图在MATLAB

function y = spat_response(w,Delta,theta_range) 

注意,这是由|y(t)|=|w^{H}a(theta)|给出,w^{H}表示w的复共轭转置。

对于a(theta),我已经有了:

function a = gen_a(M,Delta,theta) 
    for m=1:M 
     a(m)=exp(1i*2*pi*Delta*sin(theta)*(m-1)); 
    end 
end 

为绘制空间响应|y(t)|,我是不成功的,这是我到目前为止已经做作:

function y = spat_response(w,Delta,theta_range) 
y(t) = abs(w'*a(theta_range)); 
a = gen_a(M,Delta,theta); 
      function a = gen_a(M,Delta;theta) 
       for m=1:M 
        a(m)=exp(1i*2*pi*Delta*sin(theta)*(m-1)); 
       end  
      end 
fplot(y,[-25,25])   
end 

嵌套ISN不工作虽然

回答

1

您不需要嵌套的功能。

function y = spat_response(w,Delta,theta_range) 
    a = gen_a(M,Delta,theta); 
    y(t) = abs(w'*a(theta_range));   
    fplot(y,[-25,25])   
end 

function a = gen_a(M,Delta,theta) 
    for m=1:M 
     a(m)=exp(1i*2*pi*Delta*sin(theta)*(m-1)); 
    end 
end 

你将只能拨打spat_response().m外,其他功能将仅适用于.m范围

+0

我明白了。但是我仍然因我的定义(或缺乏)'theta_range'和我对函数y(t)的定义而出错。 –

+0

'y(t)'在spat_response里没有意义,因为你没有't',尝试'y = abs(w'* a(theta_range))''。 – xvan

+0

问题在于'a'没有正确定义,因为人们甚至可以在StackOverflow上看到,在引入'a'后文本变为红色。定义theta_range也是一件尚未完成的事情,我被困住了。 –