Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab。四元函数:???索引超过矩阵维数_Matlab - Fatal编程技术网

Matlab。四元函数:???索引超过矩阵维数

Matlab。四元函数:???索引超过矩阵维数,matlab,Matlab,我使用四元函数,我得到了那个错误 ??? 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); 我在这里使用quad: EbNodB = [0:0.51:40]; gamma_b_bar = 10.^(EbNodB/10); M=2; a=(4/log2(

我使用四元函数,我得到了那个错误

??? 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);
我在这里使用quad:

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');
我不知道为什么当我通过伽马射线棒时,当射线棒具有相同长度的射线衰减时会出现这种错误


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

我首先要做两个简单的更改:

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);

应该是

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);
(注意./而不是/)

编辑

然而,我们可能会做得更好。我们可以计算你的,所以这些线是相等的

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)));

首先,我要做两个简单的更改:

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);

应该是

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);
(注意./而不是/)

编辑

然而,我们可能会做得更好。我们可以计算你的,所以这些线是相等的

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)));

这不是你想要的答案,但是,避免在循环中增加向量。预分配内存:-)什么是Pb_条?你没有定义它,我想你没有正确调用四元函数?在quad func文档中,在“trace”之后没有可能的参数Pb_bar是错误概率,如果未定义为true,则应为Pb_bar=[],但这并不重要。当我调用quad时,我调用的是ray_淡入淡出函数,带有所需的参数,是否不正确?我想我可以这样做,除了修复您的实际问题外,(或在旧的Matlab版本中),我可能是比
quad
更好的选择。特别是,
integral
支持向量值函数,因此您可以删除
for
循环(在旧版本中也有)。这不是您要寻找的答案,但请避免在循环中增加向量。预分配内存:-)什么是Pb_条?你没有定义它,我想你没有正确调用四元函数?在quad func文档中,在“trace”之后没有可能的参数Pb_bar是错误概率,如果未定义为true,则应为Pb_bar=[],但这并不重要。当我调用quad时,我调用的是ray_淡入淡出函数,带有所需的参数,是否不正确?我想我可以这样做,除了修复您的实际问题外,(或在旧的Matlab版本中),我可能是比
quad
更好的选择。特别是,
integral
支持向量值函数,因此您可以删除
for
循环(在旧版本中也有)。