Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / свёртка элементов массива / 6 сообщений из 6, страница 1 из 1
22.09.2009, 18:34:51
    #36211233
MaxBod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
свёртка элементов массива
Здравствуйте
Есть двухмерный массив
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
(i1,k,f)
(i1,k,f2)
(i1,k2,f)
(i2,k,f)
(i2,k,f1)
(i3,k1,f)
(i3,k2,f)
(i4,k,f)
(i4,NULL,f1)
(i4,k2,NULL)
И из этого массива нужно получить
Код: plaintext
1.
2.
3.
4.
(i1,k+k2,f+f2)
(i2,k+k1,f+f1)
(i3,k+k1+k2,f)
(i4,k+k2,f1)
Совсем не понимаю, как это делать...
...
Рейтинг: 0 / 0
22.09.2009, 18:53:14
    #36211253
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
свёртка элементов массива
MaxBod
Код: plaintext
1.
2.
(i2,k+k1,f+f1)
(i3,k+k1+k2,f)
(i4,k+k2,f1)
А почему это получается именно так?
...
Рейтинг: 0 / 0
22.09.2009, 19:00:55
    #36211270
Дональдак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
свёртка элементов массива
Тоже не понял.

Сначала подумал, что одинаковые символы в первом столбце группируются в одну строку, а в остальных записываются суммы разных символов соответствующих строк.
...
Рейтинг: 0 / 0
22.09.2009, 19:09:43
    #36211285
MaxBod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
свёртка элементов массива
строки в столбцах прибавляются, только если они не встречались раньше
то есть если K1 встречается в исходном массиве три раза, то в результирующем он должен быть единственным.
в результате должно получить именно так, как я написал
...
Рейтинг: 0 / 0
22.09.2009, 20:05:28
    #36211359
С0ВЕСТЬ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
свёртка элементов массива
Hello world ;-)

Код: plaintext
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.
void Matrix3::QDUDecomposition (Matrix3& kQ, Vector3& kD, Vector3& kU) const
{
	// Factor M = QR = QDU where Q is orthogonal, D is diagonal,
	// and U is upper triangular with ones on its diagonal.  Algorithm uses
	// Gram-Schmidt orthogonalization (the QR algorithm).
	//
	// If M = [ m0 | m1 | m2 ] and Q = [ q0 | q1 | q2 ], then
	//
	//   q0 = m0/|m0|
	//   q1 = (m1-(q0*m1)q0)/|m1-(q0*m1)q0|
	//   q2 = (m2-(q0*m2)q0-(q1*m2)q1)/|m2-(q0*m2)q0-(q1*m2)q1|
	//
	// where |V| indicates length of vector V and A*B indicates dot
	// product of vectors A and B.  The matrix R has entries
	//
	//   r00 = q0*m0  r01 = q0*m1  r02 = q0*m2
	//   r10 =  0       r11 = q1*m1  r12 = q1*m2
	//   r20 =  0       r21 =  0       r22 = q2*m2
	//
	// so D = diag(r00,r11,r22) and U has entries u01 = r01/r00,
	// u02 = r02/r00, and u12 = r12/r11.

	// Q = rotation
	// D = scaling
	// U = shear

	// D stores the three diagonal entries r00, r11, r22
	// U stores the entries U[ 0 ] = u01, U[ 1 ] = u02, U[ 2 ] = u12

	// build orthogonal matrix Q
	Real fInvLength = Math::InvSqrt(m[ 0 ][ 0 ]*m[ 0 ][ 0 ] +
		m[ 1 ][ 0 ]*m[ 1 ][ 0 ] + m[ 2 ][ 0 ]*m[ 2 ][ 0 ]);
	kQ[ 0 ][ 0 ] = m[ 0 ][ 0 ]*fInvLength;
	kQ[ 1 ][ 0 ] = m[ 1 ][ 0 ]*fInvLength;
	kQ[ 2 ][ 0 ] = m[ 2 ][ 0 ]*fInvLength;

	Real fDot = kQ[ 0 ][ 0 ]*m[ 0 ][ 1 ] + kQ[ 1 ][ 0 ]*m[ 1 ][ 1 ] +
		kQ[ 2 ][ 0 ]*m[ 2 ][ 1 ];
	kQ[ 0 ][ 1 ] = m[ 0 ][ 1 ]-fDot*kQ[ 0 ][ 0 ];
	kQ[ 1 ][ 1 ] = m[ 1 ][ 1 ]-fDot*kQ[ 1 ][ 0 ];
	kQ[ 2 ][ 1 ] = m[ 2 ][ 1 ]-fDot*kQ[ 2 ][ 0 ];
	fInvLength = Math::InvSqrt(kQ[ 0 ][ 1 ]*kQ[ 0 ][ 1 ] + kQ[ 1 ][ 1 ]*kQ[ 1 ][ 1 ] +
		kQ[ 2 ][ 1 ]*kQ[ 2 ][ 1 ]);
	kQ[ 0 ][ 1 ] *= fInvLength;
	kQ[ 1 ][ 1 ] *= fInvLength;
	kQ[ 2 ][ 1 ] *= fInvLength;

	fDot = kQ[ 0 ][ 0 ]*m[ 0 ][ 2 ] + kQ[ 1 ][ 0 ]*m[ 1 ][ 2 ] +
		kQ[ 2 ][ 0 ]*m[ 2 ][ 2 ];
	kQ[ 0 ][ 2 ] = m[ 0 ][ 2 ]-fDot*kQ[ 0 ][ 0 ];
	kQ[ 1 ][ 2 ] = m[ 1 ][ 2 ]-fDot*kQ[ 1 ][ 0 ];
	kQ[ 2 ][ 2 ] = m[ 2 ][ 2 ]-fDot*kQ[ 2 ][ 0 ];
	fDot = kQ[ 0 ][ 1 ]*m[ 0 ][ 2 ] + kQ[ 1 ][ 1 ]*m[ 1 ][ 2 ] +
		kQ[ 2 ][ 1 ]*m[ 2 ][ 2 ];
	kQ[ 0 ][ 2 ] -= fDot*kQ[ 0 ][ 1 ];
	kQ[ 1 ][ 2 ] -= fDot*kQ[ 1 ][ 1 ];
	kQ[ 2 ][ 2 ] -= fDot*kQ[ 2 ][ 1 ];
	fInvLength = Math::InvSqrt(kQ[ 0 ][ 2 ]*kQ[ 0 ][ 2 ] + kQ[ 1 ][ 2 ]*kQ[ 1 ][ 2 ] +
		kQ[ 2 ][ 2 ]*kQ[ 2 ][ 2 ]);
	kQ[ 0 ][ 2 ] *= fInvLength;
	kQ[ 1 ][ 2 ] *= fInvLength;
	kQ[ 2 ][ 2 ] *= fInvLength;

	// guarantee that orthogonal matrix has determinant  1  (no reflections)
	Real fDet = kQ[ 0 ][ 0 ]*kQ[ 1 ][ 1 ]*kQ[ 2 ][ 2 ] + kQ[ 0 ][ 1 ]*kQ[ 1 ][ 2 ]*kQ[ 2 ][ 0 ] +
		kQ[ 0 ][ 2 ]*kQ[ 1 ][ 0 ]*kQ[ 2 ][ 1 ] - kQ[ 0 ][ 2 ]*kQ[ 1 ][ 1 ]*kQ[ 2 ][ 0 ] -
		kQ[ 0 ][ 1 ]*kQ[ 1 ][ 0 ]*kQ[ 2 ][ 2 ] - kQ[ 0 ][ 0 ]*kQ[ 1 ][ 2 ]*kQ[ 2 ][ 1 ];

	if ( fDet <  0 . 0  )
	{
		for (size_t iRow =  0 ; iRow <  3 ; iRow++)
			for (size_t iCol =  0 ; iCol <  3 ; iCol++)
				kQ[iRow][iCol] = -kQ[iRow][iCol];
	}

	// build "right" matrix R
	Matrix3 kR;
	kR[ 0 ][ 0 ] = kQ[ 0 ][ 0 ]*m[ 0 ][ 0 ] + kQ[ 1 ][ 0 ]*m[ 1 ][ 0 ] +
		kQ[ 2 ][ 0 ]*m[ 2 ][ 0 ];
	kR[ 0 ][ 1 ] = kQ[ 0 ][ 0 ]*m[ 0 ][ 1 ] + kQ[ 1 ][ 0 ]*m[ 1 ][ 1 ] +
		kQ[ 2 ][ 0 ]*m[ 2 ][ 1 ];
	kR[ 1 ][ 1 ] = kQ[ 0 ][ 1 ]*m[ 0 ][ 1 ] + kQ[ 1 ][ 1 ]*m[ 1 ][ 1 ] +
		kQ[ 2 ][ 1 ]*m[ 2 ][ 1 ];
	kR[ 0 ][ 2 ] = kQ[ 0 ][ 0 ]*m[ 0 ][ 2 ] + kQ[ 1 ][ 0 ]*m[ 1 ][ 2 ] +
		kQ[ 2 ][ 0 ]*m[ 2 ][ 2 ];
	kR[ 1 ][ 2 ] = kQ[ 0 ][ 1 ]*m[ 0 ][ 2 ] + kQ[ 1 ][ 1 ]*m[ 1 ][ 2 ] +
		kQ[ 2 ][ 1 ]*m[ 2 ][ 2 ];
	kR[ 2 ][ 2 ] = kQ[ 0 ][ 2 ]*m[ 0 ][ 2 ] + kQ[ 1 ][ 2 ]*m[ 1 ][ 2 ] +
		kQ[ 2 ][ 2 ]*m[ 2 ][ 2 ];

	// the scaling component
	kD[ 0 ] = kR[ 0 ][ 0 ];
	kD[ 1 ] = kR[ 1 ][ 1 ];
	kD[ 2 ] = kR[ 2 ][ 2 ];

	// the shear component
	Real fInvD0 =  1 . 0 /kD[ 0 ];
	kU[ 0 ] = kR[ 0 ][ 1 ]*fInvD0;
	kU[ 1 ] = kR[ 0 ][ 2 ]*fInvD0;
	kU[ 2 ] = kR[ 1 ][ 2 ]/kD[ 1 ];
}
...
Рейтинг: 0 / 0
22.09.2009, 23:47:51
    #36211582
MesserShmit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
свёртка элементов массива
Ёперный театр...это печально)))
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / свёртка элементов массива / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]