Максимальная длина матрицы для инвертирования матрицы на atmega32
Какая максимальная длина матрицы может быть использована для инверсии матрицы на atmega32, например, можем ли мы реализовать инверсию матрицы для матрицы 15x15 на atmega32? И если это можно сделать на atmega32... сделает ли это atmega32 медленнее? Я хочу реализовать фильтр kalamn 15 состояний для оценки углов Эйлера... данные матрицы будут с плавающей запятой..
@user255471, 👍1
Обсуждение1 ответ
Плавающие числа в Arduino IDE обычно имеют размер 4 байта. Таким образом, вы можете вычислить с помощью калькулятора, что ваша матрица займет не менее 15 х 15 х 4 байта (900 байт). Это из 2048 байт ОЗУ на Atmega32.
Может показаться, что оперативной памяти достаточно, но другие вещи, такие как библиотеки, также потребуют оперативной памяти. Некоторое время назад я ответил на вопрос об оперативной памяти. Даже очень простой скетч (в данном случае) занимал 346 байт.
Кроме того, вашей библиотеке или тому, что вы используете для инверсии матриц, может потребоваться ОЗУ для переменных и т. д.
Мое предложение состоит в том, чтобы заставить ваш код инвертировать очень маленькую матрицу (например, 1 x 1) и посмотреть, сколько оперативной памяти она использует. Затем вы можете довольно просто экстраполировать, сколько потребуется для большей матрицы.
Для инвертирования потребуется как минимум 2 массива (src, dest), поэтому 15х15 весьма сомнительно., @DataFiddler
Не могли бы вы сделать это [на месте] (https://www.mathsisfun.com/алгебра/matrix-inverse.html)? Не то чтобы библиотека, которую они предлагают использовать, обязательно это сделает., @Nick Gammon
Я вполне могу ошибаться в этом. После прочтения [Обратной матрицы с использованием элементарных операций со строками] (https://www.mathsisfun.com/алгебра/matrix-inverse-row-operations-gauss-jordan.html), похоже, вам может понадобиться больше памяти для операции инверсии., @Nick Gammon
- Ошибка при записи загрузчика в ATmega 8A с использованием Arduino Mega 2560: stk500_getsync() attempt 10 of 10: not in sync: resp=0x80
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как получить уникальный идентификатор для всех плат Arduino?
- Как очистить буфер FIFO на MPU6050?
- Элегантное решение для обновления содержимого TFT-дисплея
- Считывание нескольких поворотных энкодеров
Это не очень четко сформулированный вопрос. Вы имели в виду конкретное приложение (чтобы его можно было оптимизировать) или вам нужен общий алгоритм обращения матриц? Что вы имеете в виду под «это сделает ATMega32 медленнее»? Нет, ATMega32 останется такой же быстрой. Ваш код может стать медленнее, но это зависит от вопроса №1: для чего вам это нужно?, @StarCat
Какой тип данных вы храните в матрице? Как определяется матрица? Пожалуйста, покажите нам код., @the busybee
Я хочу реализовать фильтр kalamn 15 состояний для оценки углов Эйлера... данные матрицы будут с плавающей запятой.., @user255471
Я хочу реализовать фильтр kalamn 15 состояний для оценки углов Эйлера... данные матрицы будут с плавающей запятой.., @user255471
*это сделает atmega32 медленнее?* - медленнее чего? Конечно, это будет медленнее, чем **без** инвертирования любых матриц., @Nick Gammon