How to run this code for 1000 times?

1 Ansicht (letzte 30 Tage)
Eric Chua
Eric Chua am 27 Mai 2020
Kommentiert: KSSV am 29 Mai 2020
%For C1
lambda1 = [60.21, 41.58, 9.11, 8.71, 3.83, 3.74, 18.06]
r1 = poissrnd(lambda1)
%For C2
lambda2 = [41.58, 60.21, 8.71, 9.11, 3.74, 3.83, 18.06]
r2 = poissrnd(lambda2)
%Designed training sequences x1 and x2
x1 = [1,1,1,0,0,0,0,1,0,1,0,1,1,0,0,1] ;
x2 = [1,1,1,0,1,0,0,0,1,1,1,0,0,0,0,1] ;
%X[3] to X[16]
X3 = [1 1 1 1 1 1 1]' ;
X4 = [0 0 1 1 1 1 1]' ;
X5 = [0 1 0 0 1 1 1]' ;
X6 = [0 0 0 1 0 0 1]' ;
X7 = [0 0 0 0 0 1 1]' ;
X8 = [1 0 0 0 0 0 1]' ;
X9 = [0 1 1 0 0 0 1]' ;
X10 = [1 1 0 1 1 0 1]' ;
X11 = [0 1 1 1 0 1 1]' ;
X12 = [1 0 0 1 1 1 1]' ;
X13 = [1 0 1 0 0 1 1]' ;
X14 = [0 0 1 0 1 0 1]' ;
X15 = [0 0 0 0 1 0 1]' ;
X16 = [1 1 0 0 0 0 1]' ;
%X,a 7x14 matrix
X = [X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16];
%C, a 7x2 matrix
C = [r1; r2]' ;
%Y, a 14x2 matrix
Y = X'*C ;
%Yd = Poiss(Y) (at equation (8))
Yd = poissrnd(Y)
%y1, a 14x1 matrix ; y2, a 14x1 matrix
y1 = Y(:,1)
y2 = Y(:,2)
%Least Square Estimate of C
Cls = (inv(X*X'))*(X*Yd)
% To set to zero all the negative entries of C
Cls1 = max(Cls,0)
%Mean square error of LS C and C
MSE = mean((C - Cls1).^2)
  4 Kommentare
Eric Chua
Eric Chua am 27 Mai 2020
Thanks for the reply. r1 and r2 are values that will change every single run as they are generated with poisson, and so do the C, Y, Yd.
Eric Chua
Eric Chua am 27 Mai 2020
Cls and Cls1 are also changing for every run.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

KSSV
KSSV am 27 Mai 2020
N = 1000 ;
MSE = zeros(N,2) ;
for i = 1:N
%For C1
lambda1 = [60.21, 41.58, 9.11, 8.71, 3.83, 3.74, 18.06] ;
r1 = poissrnd(lambda1) ;
%For C2
lambda2 = [41.58, 60.21, 8.71, 9.11, 3.74, 3.83, 18.06] ;
r2 = poissrnd(lambda2) ;
%Designed training sequences x1 and x2
x1 = [1,1,1,0,0,0,0,1,0,1,0,1,1,0,0,1] ;
x2 = [1,1,1,0,1,0,0,0,1,1,1,0,0,0,0,1] ;
%X[3] to X[16]
X3 = [1 1 1 1 1 1 1]' ;
X4 = [0 0 1 1 1 1 1]' ;
X5 = [0 1 0 0 1 1 1]' ;
X6 = [0 0 0 1 0 0 1]' ;
X7 = [0 0 0 0 0 1 1]' ;
X8 = [1 0 0 0 0 0 1]' ;
X9 = [0 1 1 0 0 0 1]' ;
X10 = [1 1 0 1 1 0 1]' ;
X11 = [0 1 1 1 0 1 1]' ;
X12 = [1 0 0 1 1 1 1]' ;
X13 = [1 0 1 0 0 1 1]' ;
X14 = [0 0 1 0 1 0 1]' ;
X15 = [0 0 0 0 1 0 1]' ;
X16 = [1 1 0 0 0 0 1]' ;
%X,a 7x14 matrix
X = [X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16];
%C, a 7x2 matrix
C = [r1; r2]' ;
%Y, a 14x2 matrix
Y = X'*C ;
%Yd = Poiss(Y) (at equation (8))
Yd = poissrnd(Y) ;
%y1, a 14x1 matrix ; y2, a 14x1 matrix
y1 = Y(:,1) ;
y2 = Y(:,2) ;
%Least Square Estimate of C
Cls = (inv(X*X'))*(X*Yd) ;
% To set to zero all the negative entries of C
Cls1 = max(Cls,0) ;
%Mean square error of LS C and C
MSE(i,:) = mean((C - Cls1).^2) ;
end
  11 Kommentare
Eric Chua
Eric Chua am 28 Mai 2020
How do I add up all the MSE value in first column and divide by 1000 to get the average?
KSSV
KSSV am 29 Mai 2020
Use the function mean.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by