powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / свёртка элементов массива
6 сообщений из 6, страница 1 из 1
свёртка элементов массива
    #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
свёртка элементов массива
    #36211253
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxBod
Код: plaintext
1.
2.
(i2,k+k1,f+f1)
(i3,k+k1+k2,f)
(i4,k+k2,f1)
А почему это получается именно так?
...
Рейтинг: 0 / 0
свёртка элементов массива
    #36211270
Дональдак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже не понял.

Сначала подумал, что одинаковые символы в первом столбце группируются в одну строку, а в остальных записываются суммы разных символов соответствующих строк.
...
Рейтинг: 0 / 0
свёртка элементов массива
    #36211285
MaxBod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
строки в столбцах прибавляются, только если они не встречались раньше
то есть если K1 встречается в исходном массиве три раза, то в результирующем он должен быть единственным.
в результате должно получить именно так, как я написал
...
Рейтинг: 0 / 0
свёртка элементов массива
    #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
свёртка элементов массива
    #36211582
MesserShmit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёперный театр...это печально)))
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / свёртка элементов массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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