Как выполнить несколько конкатенаций двух массивов, которые обновляются в отдельных функциях, когда размер одного является условным, а другой постоянным - PullRequest
0 голосов
/ 17 июня 2020

Я нашел это решение объединить пустой массив , но я не верю, что оно полностью решает мою проблему. Мне нужен более общий подход, который избегает добавления оператора if к каждому экземпляру конкатенации. Несколько функций в сценарии MATLAB, который я транскрибирую в Python, идут после оператора if, который инициализирует FixedDictionaryElement, который представляет собой двумерный массив.

if (param.preserveDCAtom>0)
    FixedDictionaryElement(1:size(Data,1),1) = 1/sqrt(size(Data,1));
else
    FixedDictionaryElement = [];

Если это условие выполнено, двумерный массив инициализируется, заполняется данными, а затем объединяется с другим двумерным массивом в нескольких разных местах; однако, если условие не выполняется, инициализируется пустой массив FixedDictionaryElement = [], но он по-прежнему объединяется в тех же местах, что и в приведенном ниже примере. Я предполагаю, что MATLAB просто объединяет пустой массив, что в конечном итоге похоже на умножение числа на 1. Пустой массив не влияет на заполненный массив, и программа продолжает работу. FixedDictionaryElement в данном случае - пустой массив.


if (param.errorFlag==0)
        CoefMatrix = OMP(**[FixedDictionaryElement,Dictionary]**,Data, param.L);

Допустим, FixedDictionaryElement = [] и Dictionary = 34x80.

Глядя на код MATLAB, я предполагаю, что пустой массив инициализирован, чтобы обеспечить выполнение конкатенации по всему сценарию, независимо от результата оператора if. В противном случае вы получите сообщение об ошибке, что FixedDictionaryElement не определено без пустого массива.

Как я могу обобщить решение, данное в приведенной выше ссылке, не добавляя новый оператор if при каждом экземпляре конкатенации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...