Attempted to access Pe(7); index must be a positive integer or logical.

1 vue (au cours des 30 derniers jours)
Can
Can le 8 Juil 2012
I wrote this function but I get an error:
??? Attempted to access Pe(7); index must be a positive integer or logical.
Error in ==> prob3 at 56
Pe(m)=(Pe(m)+error(j))/10000;
What should I do for it?
Pe=zeros(1,11);
x=zeros(1,10000);
y=zeros(1,10000);
z=zeros(1,10000);
error=zeros(1,10000);
for q=0:0.1:1
for k=1:10000
error(k)=0;
end
for i=1:10000
if rand(1)<1/2
x(i)=0;
if rand(1)<q
y(i)=1;
if q<1/2
z(i)=1;
else
z(i)=0;
end
else
y(i)=0;
if q>1/2
z(i)=1;
else
z(i)=0;
end
end
else
x(i)=1;
if rand(1)<q
y(i)=1;
if q<1/2
z(i)=1;
else
z(i)=0;
end
else
y(i)=0;
if q>1/2
z(i)=1;
else
z(i)=0;
end
end
end
if x(i)==z(i)
error(i)=error(i)+0;
else
error(i)=error(i)+1;
end
end
m=(q./0.1)+1;
for j=1:10000
Pe(m)=(Pe(m)+error(j))/10000;
end
end
plot(Pe,q);

Réponses (1)

Richard Brown
Richard Brown le 9 Juil 2012
Your problem is that q and hence m are floating point numbers, not integers. in this case the problem is that
m = 0.6 / 0.1 + 1
differs from 7 in the sixteenth decimal place, and hence can't be used to index. Either use
m = round(q / 0.1 + 1)
or, better, use integer indices in your loop, and compute q from them

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by