Я нашел это решение объединить пустой массив , но я не верю, что оно полностью решает мою проблему. Мне нужен более общий подход, который избегает добавления оператора 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 при каждом экземпляре конкатенации?