matlab求函数在一定范围内的最小值出现问题
N=21;K=1200;sita0=0;sita=[-90:0.1:90];n=[00.39351.19021.70052.10272.65033.15063.46984...
N=21;
K=1200;
sita0=0;
sita=[-90:0.1:90];
n=[0 0.3935 1.1902 1.7005 2.1027 2.6503 3.1506 3.4698 4.3701 4.6251 5 5.3749 5.6299 6.5302 6.8494 7.3497 7.8973 8.2995 8.8098 9.6065 10]';
f0=3000;
fs=1200;
snr=10;
vs=exp(-j*2*pi*n*sin(sita0*pi/180));
v=exp(-j*2*pi*n*sin(sita*pi/180));
xs=sqrt(10^(snr/10)/2)*vs*exp(j*2*pi*fs/f0*[0:K-1]);
xn=(randn(N,K)+j*randn(N,K))/sqrt(2);
RS=xs*xs'/K;
RU=(xn*xn')/K;
[V,F]=eig(RS,RU);
[F,I]=sort(diag(F));
w=V(:,I(21));
p=abs(w'*v);
y=@(sita)(20*log10(p/max(p)));
[xm,fmin]=fminbnd(y,-8,0)
figure(1);
plot(sita,20*log10(p/max(p)));
为什么返回的最小值fmin是sita取值相对应的191个值,不是应该只有一个最小值吗,而且从图中粗略看xm应该取6左右,而返回的值是错误的。 展开
K=1200;
sita0=0;
sita=[-90:0.1:90];
n=[0 0.3935 1.1902 1.7005 2.1027 2.6503 3.1506 3.4698 4.3701 4.6251 5 5.3749 5.6299 6.5302 6.8494 7.3497 7.8973 8.2995 8.8098 9.6065 10]';
f0=3000;
fs=1200;
snr=10;
vs=exp(-j*2*pi*n*sin(sita0*pi/180));
v=exp(-j*2*pi*n*sin(sita*pi/180));
xs=sqrt(10^(snr/10)/2)*vs*exp(j*2*pi*fs/f0*[0:K-1]);
xn=(randn(N,K)+j*randn(N,K))/sqrt(2);
RS=xs*xs'/K;
RU=(xn*xn')/K;
[V,F]=eig(RS,RU);
[F,I]=sort(diag(F));
w=V(:,I(21));
p=abs(w'*v);
y=@(sita)(20*log10(p/max(p)));
[xm,fmin]=fminbnd(y,-8,0)
figure(1);
plot(sita,20*log10(p/max(p)));
为什么返回的最小值fmin是sita取值相对应的191个值,不是应该只有一个最小值吗,而且从图中粗略看xm应该取6左右,而返回的值是错误的。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询