Matlab - Matriz de varianza-covarianza

 
Vista:
sin imagen de perfil

Matriz de varianza-covarianza

Publicado por Fer (2 intervenciones) el 28/11/2016 22:36:19
Hola amigos! tengo un problema con una matriz en matlab. Os explico:
Tras importar un archivo .csv con esta disposición

Sx1 Sy1 Sz1 Sxy1 Syz1 Sxz1
Sx2 Sy2 Sz2 Sxy2 Syz2 Sxz2
... ...
Sxn Syn Szn Sxyn Syzn Sxzn


Pues la cosa es que no sabría como crear una matriz de la siguiente forma, adjunto archivo.
Es una matriz de varianza-covarianza. He mirado mil posibilidades, incluso probando a modificar la funcion Kron… pero no doy con la tecla.



Gracias por vuestro tiempo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Matriz de varianza-covarianza

Publicado por Jorge De Los Santos (213 intervenciones) el 29/11/2016 05:08:53
Hola, puedes hacerlo de la siguiente manera:


1
2
3
4
5
6
7
8
9
10
clear;clc;
X = csvread('datos.csv');
S = zeros(3*size(X,1),3*size(X,1));
for i=1:size(X,1)
    cf = X(i,:);
    tm = [cf(1),cf(4),cf(6);
          cf(4),cf(2),cf(5);
          cf(6),cf(5),cf(3)];
	S((i-1)*3+1:i*3, (i-1)*3+1:i*3) = tm;
end



Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Matriz de varianza-covarianza

Publicado por Fer (2 intervenciones) el 29/11/2016 10:52:43
Mil gracias Jorge. Código limpio, entendible y lo mas importante da solución al problema planteado.

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Matriz de varianza-covarianza

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 30/11/2016 14:04:02
1
2
3
4
5
6
7
8
9
10
11
12
clear all
n=input('Ingrese n:');
A=round(40*rand(n,6))   %Matriz Tras importar un archivo .csv
M=[sym('Sx',[n,1])  sym('Sy',[n,1])  sym('Sz',[n,1])  sym('Sxy',[n,1])   sym('Syz',[n,1])  sym('Sxz',[n,1]) ]
k=1;
for i=1:3:3*n
     AA(i:i+2,i:i+2)=[A(k,1) A(k,4), A(k,6); A(k,4) A(k,2) A(k,5); A(k,6) A(k,5) A(k,3)];
     MM(i:i+2,i:i+2)=[M(k,1) M(k,4), M(k,6); M(k,4) M(k,2) M(k,5);  M(k,6) M(k,5) M(k,3)];
k=k+1;
end
MM
AA



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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
matriz_covarianza1
Ingrese n:1
 
A =
 
    18    15    31    29    17    28
 
 
M =
 
[ Sx1, Sy1, Sz1, Sxy1, Syz1, Sxz1]
 
 
MM =
 
[  Sx1, Sxy1, Sxz1]
[ Sxy1,  Sy1, Syz1]
[ Sxz1, Syz1,  Sz1]
 
 
AA =
 
    18    29    28
    29    15    17
    28    17    31
 
>> matriz_covarianza1
Ingrese n:2
 
A =
 
    38    28    16    18     9     1
    31     4    24     2    33    35
 
 
M =
 
[ Sx1, Sy1, Sz1, Sxy1, Syz1, Sxz1]
[ Sx2, Sy2, Sz2, Sxy2, Syz2, Sxz2]
 
 
MM =
 
[  Sx1, Sxy1, Sxz1,    0,    0,    0]
[ Sxy1,  Sy1, Syz1,    0,    0,    0]
[ Sxz1, Syz1,  Sz1,    0,    0,    0]
[    0,    0,    0,  Sx2, Sxy2, Sxz2]
[    0,    0,    0, Sxy2,  Sy2, Syz2]
[    0,    0,    0, Sxz2, Syz2,  Sz2]
 
 
AA =
 
    38    18     1     0     0     0
    18    28     9     0     0     0
     1     9    16     0     0     0
     0     0     0    31     2    35
     0     0     0     2     4    33
     0     0     0    35    33    24
 
matriz_covarianza1
Ingrese n:3
 
A =
 
     3     9    27     2    17    21
    27    23    24     6    33    35
    20     5     2     1    25     4
 
 
M =
 
[ Sx1, Sy1, Sz1, Sxy1, Syz1, Sxz1]
[ Sx2, Sy2, Sz2, Sxy2, Syz2, Sxz2]
[ Sx3, Sy3, Sz3, Sxy3, Syz3, Sxz3]
 
 
MM =
 
[  Sx1, Sxy1, Sxz1,    0,    0,    0,    0,    0,    0]
[ Sxy1,  Sy1, Syz1,    0,    0,    0,    0,    0,    0]
[ Sxz1, Syz1,  Sz1,    0,    0,    0,    0,    0,    0]
[    0,    0,    0,  Sx2, Sxy2, Sxz2,    0,    0,    0]
[    0,    0,    0, Sxy2,  Sy2, Syz2,    0,    0,    0]
[    0,    0,    0, Sxz2, Syz2,  Sz2,    0,    0,    0]
[    0,    0,    0,    0,    0,    0,  Sx3, Sxy3, Sxz3]
[    0,    0,    0,    0,    0,    0, Sxy3,  Sy3, Syz3]
[    0,    0,    0,    0,    0,    0, Sxz3, Syz3,  Sz3]
 
 
AA =
 
     3     2    21     0     0     0     0     0     0
     2     9    17     0     0     0     0     0     0
    21    17    27     0     0     0     0     0     0
     0     0     0    27     6    35     0     0     0
     0     0     0     6    23    33     0     0     0
     0     0     0    35    33    24     0     0     0
     0     0     0     0     0     0    20     1     4
     0     0     0     0     0     0     1     5    25
     0     0     0     0     0     0     4    25     2
 
>> matriz_covarianza1
Ingrese n:4
 
A =
 
    36    22    37     4     3    38
     4     0    39    20    26    24
    21    31    20    23    21    18
     6    34    11    31     7    38
 
 
M =
 
[ Sx1, Sy1, Sz1, Sxy1, Syz1, Sxz1]
[ Sx2, Sy2, Sz2, Sxy2, Syz2, Sxz2]
[ Sx3, Sy3, Sz3, Sxy3, Syz3, Sxz3]
[ Sx4, Sy4, Sz4, Sxy4, Syz4, Sxz4]
 
 
MM =
 
[  Sx1, Sxy1, Sxz1,    0,    0,    0,    0,    0,    0,    0,    0,    0]
[ Sxy1,  Sy1, Syz1,    0,    0,    0,    0,    0,    0,    0,    0,    0]
[ Sxz1, Syz1,  Sz1,    0,    0,    0,    0,    0,    0,    0,    0,    0]
[    0,    0,    0,  Sx2, Sxy2, Sxz2,    0,    0,    0,    0,    0,    0]
[    0,    0,    0, Sxy2,  Sy2, Syz2,    0,    0,    0,    0,    0,    0]
[    0,    0,    0, Sxz2, Syz2,  Sz2,    0,    0,    0,    0,    0,    0]
[    0,    0,    0,    0,    0,    0,  Sx3, Sxy3, Sxz3,    0,    0,    0]
[    0,    0,    0,    0,    0,    0, Sxy3,  Sy3, Syz3,    0,    0,    0]
[    0,    0,    0,    0,    0,    0, Sxz3, Syz3,  Sz3,    0,    0,    0]
[    0,    0,    0,    0,    0,    0,    0,    0,    0,  Sx4, Sxy4, Sxz4]
[    0,    0,    0,    0,    0,    0,    0,    0,    0, Sxy4,  Sy4, Syz4]
[    0,    0,    0,    0,    0,    0,    0,    0,    0, Sxz4, Syz4,  Sz4]
 
 
AA =
 
    36     4    38     0     0     0     0     0     0     0     0     0
     4    22     3     0     0     0     0     0     0     0     0     0
    38     3    37     0     0     0     0     0     0     0     0     0
     0     0     0     4    20    24     0     0     0     0     0     0
     0     0     0    20     0    26     0     0     0     0     0     0
     0     0     0    24    26    39     0     0     0     0     0     0
     0     0     0     0     0     0    21    23    18     0     0     0
     0     0     0     0     0     0    23    31    21     0     0     0
     0     0     0     0     0     0    18    21    20     0     0     0
     0     0     0     0     0     0     0     0     0     6    31    38
     0     0     0     0     0     0     0     0     0    31    34     7
     0     0     0     0     0     0     0     0     0    38     7    11



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Matriz de varianza-covarianza

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 30/11/2016 14:26:42
1
2
3
4
5
6
7
8
clear all
A=round(40*rand(3,6))   %Matriz Tras importar un archivo .csv
k=1;
for i=1:3:3*size(A,1)
     AA(i:i+2,i:i+2)=[A(k,1) A(k,4), A(k,6); A(k,4) A(k,2) A(k,5); A(k,6) A(k,5) A(k,3)];
k=k+1;
end
AA


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>> matriz_covarianza2
 
A =
 
     8     7    36    19    11     7
     6     6    38    15     3     1
    11    24     9    21    17    38
 
 
AA =
 
     8    19     7     0     0     0     0     0     0
    19     7    11     0     0     0     0     0     0
     7    11    36     0     0     0     0     0     0
     0     0     0     6    15     1     0     0     0
     0     0     0    15     6     3     0     0     0
     0     0     0     1     3    38     0     0     0
     0     0     0     0     0     0    11    21    38
     0     0     0     0     0     0    21    24    17
     0     0     0     0     0     0    38    17     9



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar