Мне нужно создать таблицу фонем с определенным распределением вероятности для кодирования вещей. Теперь существует 22 базовых элемента (каждый с заданной вероятностью, сумма 100%), которые должны отображаться в таблице из 12 элементов, которая имеет желаемых вероятности элемента (сумма 100%).Matlab нелинейный двоичный Минимизация
Таким образом, часть минимизации заключается в объединении нескольких базовых элементов для получения 12 элементов таблицы. Каждый базовый элемент должен выполняться ровно один раз.
Кроме того, таблица имеет 3 ряда. Таким образом, тот же 12-элементный состав из 22 базовых элементов должен минимизировать ошибку для трех целевых векторов. Скажем, данные целевые векторы b1, b2, b3 (размер 12х1), то данное основание вектор х (размер 22x1), и они связаны неизвестной матрицы А (12x22) по:
b1 + Err1 = Ах
b2 + ERR2 = Ах
b3 + ERR3 = Ах
Подводя итог: А можно найти так что dot_prod (Err1 + ERR2 + ERR3, Err1 + err2 + err3) = min (наименьшие квадраты). И - согласно приведенному выше объяснению - A должен содержать только 1 и 0, имея ровно по одному на столбец.
К сожалению, я не знаю, как подойти к этой проблеме. Может ли это быть выражено иначе, чем матрично-векторная форма? Какие инструменты в Matlab могли бы сделать это?
Вы ищете A или x? – percusse
Типичным решением для этого является 'x '\ b'', но это не будет ограничивать записи A целыми числами 1-0. Это более сложная проблема, связанная с линейным программированием 0-1. Если у вас больше ограничений, вы можете попытаться добавить их, сумма столбцов будет равна 1 строке суммы 1 и т. Д., Чтобы помочь оптимизации. – percusse
Правильно, x '\ b' будет делать это для произвольных матриц A. Любая идея о том, как реализовать до 2 требований для A? – flok3r