1

我正在使用四元函数,我收到了那个错误

??? Index exceeds matrix dimensions.

这就是我所拥有的:

function out = ray_fading(phi, gamma_b_bar,b)
out = (2*(sin(phi)).^2)/(2*(sin(phi)).^2+ b*gamma_b_bar);

我在这里使用四边形:

EbNodB = [0:0.51:40];
gamma_b_bar = 10.^(EbNodB/10);
M=2;
a=(4/log2(M))*(1-(1/sqrt(M)));
b=3*log2(M)/(M-1);

for j = 1:length(gamma_b_bar)     
  Pb_bar = [Pb_bar (a/pi)* quad('ray_fading',0,pi/2,[],[],gamma_b_bar(j),b)];
end
figure(1);
semilogy(EbNodB,Pb_bar)
xlabel('SNR, EbNo(dB)');
ylabel('Bit error probability, Pe');
title('Theoretical results of BER of M-QAM');

我不知道为什么当我通过 gamma_bar_b(j) 时 Pb_bar 具有相同长度的光线衰减时会出现错误...

一些帮助会很棒,谢谢:)

4

1 回答 1

1

我将首先进行两个简单的更改:

quad('ray_fading',0,pi/2,[],[],gamma_b_bar(j),b)

应该

quad(@(x)(ray_fading(x,gamma_b_bar(j), b)),0,pi/2)

out = (2*(sin(phi)).^2)/(2*(sin(phi)).^2+ b*gamma_b_bar);

应该

out = (2*(sin(phi)).^2)./(2*(sin(phi)).^2+ b*gamma_b_bar);

(注意 ./ 而不是 /)

编辑

但是,我们可能会做得更好。我们可以解析地计算你的积分,所以这些线是相等的

quad(@(x)(ray_fading(x,gamma_b_bar(j), b)),0,pi/2) 
pi/2 * (1-sqrt(b*gamma_b_bar(j)/(2+b*gamma_b_bar(j))))

所以现在我们可以将整个 for 循环替换为:

Pb_bar = a/2 * (1-sqrt(b*gamma_b_bar./(2+b*gamma_b_bar)));
于 2013-11-14T08:14:22.967 回答