Hacer que mi contador se detanga para cada i de mi ciclo for
Publicado por Arturo (1 intervención) el 25/02/2018 07:10:26
hola, espero obtener ayuda para resolver este problema. Estoy iniciando en MatLab, hice un programa que requiere de dos ciclos for uno dentro de otro, pero tengo un problema con el contador (SUMA_EQ_CLAS) que esta dentro del ciclo de segundo nivel, ya que quisiera que ese contador terminara cuando el ciclo for del segundo nivel termine y el dato obtenido lo almacene y empiece a contar de nuevo, para cada j del for principal, pero mi contador sigue acumulando los datos y se detiene solo hasta que el programa ha finalizado. Al final quiero que para cada valor del ciclo principal j genere un dato y lo pueda graficar, sin que se acumulen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
n=1000000;
SIGMA=0;
EQUIVOCADO=0;
PROB_POS=0;
SUMA_EQ_CLAS=0;
%este programa genera bits aleatorios y les suma un ruido y apartir de esto, el programa calcula la probabilidad
%de que se equivoque al clasificarlos si lo que fue originalmente fue un
%bit cero o un bit uno. Usa el teorema de Bayes para esto.
for j=1:100 %sigama para generar un ruido cada vez mayor de 0.1 en 0.1 hasta 10%
PROB_POS=0;
INTERV=0.1;
SIGMA=SIGMA+INTERV;
V_SIGMA(j)=SIGMA;
fprintf('PARA SIGMA = %f\n',SIGMA);
for i=1:n %se repetira un millon de veces el experimento de genrar el bit y el
%ruido y calcular al probabilidad de equivocarseaal deducir si fue un 0 o 1 originalmente
C=rand;
if C<0.9
U=0;
Y(i)=U;
else
U=1;
Y(i)=U;
end
EV= randn*SIGMA +U;
P_EVBIT1=exp(-((EV-1)^2)/(2*(SIGMA^2)));
P_EVBIT0=exp(-((EV-0)^2)/(2*(SIGMA^2)));
P_EV=P_EVBIT0*0.9 + P_EVBIT1*0.1;
P_BIT0EV= (P_EVBIT0*0.9)/P_EV;
P_BIT1EV= (P_EVBIT1*0.1)/P_EV;
if P_BIT1EV<P_BIT0EV
CLASIF=0;
CLAS(i)=CLASIF;
else
CLASIF=1;
CLAS(i)=CLASIF;
end
if CLASIF~=U
SUMA_EQ_CLAS=SUMA_EQ_CLAS+ 1; % este contado sigue sumando aunque el ciclo i ya termino hasta que el ciclo j termine
end
end
PROB_EQUI=SUMA_EQ_CLAS/n
%
% V_P_EVBIT1(i)=P_EVBIT1;
% V_P_EVBIT0(i)=P_EVBIT0;
% V_P_BIT1EV(i)=P_BIT1EV;
% V_P_BIT0EV(i)=P_BIT0EV;
% CLAS(i)=CLASIF;
% CERO_CLAS= numel(find(CLAS==0));
%
% UNO_CLAS= numel(find(CLAS==1));
% Y(i)=U;
% F(i)= EV;
% CERO_BIT= numel(find(Y==0));
%
% UNO_BIT= numel(find(Y==1));
V_SIGMA(j)=SIGMA;
V_EQ_CLASS(j)=PROB_EQUI;
end
plot(V_SIGMA,V_EQ_CLASS)
Valora esta pregunta
0