Мне нужно сгенерировать матрицу с распределением Гаусса (со значениями, разбросанными в основном от -5 до 5), матрицу Пуассона, смешать их и передать в качестве входных данных в Matlab FastICA.
Я новичок в Matlab, дистрибутивах и ICA, поэтому несколько указателей действительно помогут. Я очень старался, но не знаю, на правильном ли я пути.
Чтобы сгенерировать матрицы Гаусса и Пуассона, я создал два массива:
s2 = poissrnd(2, 1, 40000); %Poisson distribution with lambda 2
s1 = rand(size(s2)) * 10 - 5; %Gaussian distribution and values ranging from -5 to 5
Затем я использую функцию reshape для создания двух матриц 200x200. При использовании изображения я получаю следующие изображения:
Мой первый вопрос: это правильный способ создания матриц Гаусса и Пуассона в Matlab? Или есть какие-то встроенные функции, которые фактически генерируют матрицы, вместо того, чтобы создавать и изменять массивы?
Теперь вторая проблема: использование FastICA.
Ссылаясь на очень хороший ответ по адресу: ICA (независимый анализ компонентов) fast- алгоритм с фиксированной точкой, в нем упоминается, что FastICA нужен каждый сигнал подряд.
Поэтому я генерирую свою матрицу сигналов с помощью:
S(1,:) = s1; %row 1
S(2,:) = s2; %row 2
Затем я генерирую матрицу микширования, добавляю немного шума и передаю полученную матрицу в качестве входных данных для функции fastica ().
У меня вопрос: можно ли передавать 2D-данные напрямую в FastICA? Что, если у вас есть изображение с множеством смешанных сигналов, и вы хотите передать его ICA, чтобы он смог найти независимые компоненты?
Ссылка на учебник, объясняющий, как использовать FastICA на разных входах, была бы очень полезна.
Заранее благодарим всех, кто читает этот пост и пытается помочь. И извините за длинный вопрос, я хотел убедиться, что он хорошо понят!