crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QGenericMatrix<N, M, T>, как засунуть переменные размера матрицы в конструктор
zalivaha
  опции профиля:
сообщение 1.5.2010, 11:16
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 3.10.2009
Пользователь №: 1134

Спасибо сказали: 0 раз(а)




Репутация:   0  


Уважаемые Спецы! Подскажите как работать с классом QGenericMatrix.
Размер матрицы не определен, может быть любым, а конструктор требует размер, как обойти???
Нужна матрица ну к примеру 3*N, N от 3 до 100.
Но шаблон не позволяет вставлять переменную.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 1.5.2010, 11:18
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


boost::uBlas можно использовать, там есть матрицы произвольного размера.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zalivaha
  опции профиля:
сообщение 1.5.2010, 11:31
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 3.10.2009
Пользователь №: 1134

Спасибо сказали: 0 раз(а)




Репутация:   0  


Есть вот такие
typedef QGenericMatrix<2, 2, qreal> QMatrix2x2;
typedef QGenericMatrix<2, 3, qreal> QMatrix2x3;
typedef QGenericMatrix<2, 4, qreal> QMatrix2x4;
typedef QGenericMatrix<3, 2, qreal> QMatrix3x2;
typedef QGenericMatrix<3, 3, qreal> QMatrix3x3;
typedef QGenericMatrix<3, 4, qreal> QMatrix3x4;
typedef QGenericMatrix<4, 2, qreal> QMatrix4x2;
typedef QGenericMatrix<4, 3, qreal> QMatrix4x3;

А при записи вот такого кода:
QGenericMatrix <vector.size(), 3, qreal> Matrix_A;
Ошибка:
error: 'vector' was not declared in this scope
error: a function call cannot appear in a constant-expression.
Размер vector может быть любым.
как быть?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zalivaha
  опции профиля:
сообщение 2.5.2010, 13:28
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 3.10.2009
Пользователь №: 1134

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вот тут вот набросал примерчик для работы с матрицами на основе MathLibrary0.1.
Он компилиться в VS, но ни как не хочет компилиться в creatore.
Может кто сможет подправить, матрицы B+C складывает, а A = B + C ругается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zalivaha
  опции профиля:
сообщение 2.5.2010, 14:04
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 3.10.2009
Пользователь №: 1134

Спасибо сказали: 0 раз(а)




Репутация:   0  


спасибо kibsoft!!!
Вот рабочий пример на основе MathLibrary0.1, если кому нужно работать с матрицами.
Прикрепленные файлы
Прикрепленный файл  MatrixNEW.zip ( 12,53 килобайт ) Кол-во скачиваний: 124
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 2.5.2010, 15:29
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


зачем только надо было изобретать какой-то MatrixLibrary, если можно было использовать boost.
boost::matrix<double> a(3, 3);
a(0, 0) = 1;
a(1, 1) = 2;
a(2, 2) = 3;
a = prod(a, a); // a *= a;

чем такое не устроило?

Сообщение отредактировал DEADHUNT - 2.5.2010, 15:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zalivaha
  опции профиля:
сообщение 2.5.2010, 18:13
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 3.10.2009
Пользователь №: 1134

Спасибо сказали: 0 раз(а)




Репутация:   0  


Уважаемый DEADHUNT, неустроило тем что просто не знал про boost.
Отлично что можно даже выбирать инструменты.
И сразу вопрос? А он обращение матриц делает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 2.5.2010, 19:56
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


LU факторизация, решение СЛАУ есть. но всё таки библиотека называется Basic Linear Algebra. подробнее здесь можно почитать http://www.boost.org/doc/libs/1_42_0/libs/...s/doc/index.htm
также есть более мощная библиотека основанная на boost::uBlas - LAPACK
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.12.2024, 20:19