Написать функцию encodedgt, который принимает в качестве входных данных вектор столбца или строки с целыми записями и производит в качестве выходного сигнала вектор-строку, где каждое целое число кодируется в соответствии со следующей таблицейКодирование элементов в пределах столбца или вектор строки MATLAB
Integer Кодирование 3 0 1 1 1 1 0 1 ... и т.д.
и правилом encodedgt (x) = 1 - encodedgt (- (x + 1)), когда x < 0.
К примеру,
encodedgt ([1 12 -3])
[0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0]
Так что я уже написал сценарий, который прекрасно работает с положительными числами, является следующее ...
функция х = encodedgt (х)
ENC = {0, '0 0 0 1 1 0 1'; 1, '0 0 1 1 0 0 1'; 2, '0 0 1 0 0 1 1'; ... 3, '0 1 1 1 1 0 1'; 4, '0 1 0 0 0 1 1'; 5, '0 1 1 0 0 0 1'; 6, ... '0 1 0 1 1 1 1'; 7, '0 1 1 1 0 1 1'; 7, '0 1 1 1 0 1 1'; 8, ... '0 1 1 0 1 1 1'; 9, '0 0 0 1 0 1 1'; 10, '0 0 0 0 1 0 1'; 11, ... '1 0 1 0 0 0 0'; 12, '0 1 0 1 0'};
y = str2num (cell2mat (arrayfun (@ (v) enc {find ([enc {,, 1}]) == v, 2} ', x (:),' UniformOutput ', 0))) '
конец
ОДНАКО, я не совсем уверен, как заставить его работать с отрицательными числами. Поскольку вопрос говорит мне, encodedgt (x) = 1 - encodedgt (- (x + 1)), когда x < 0. Поэтому я подумал об использовании оператора if, но это не так точно для планирования. Есть ли лучший способ приблизиться к этому?
Вы должны начать с описания того, что вы пробовали – CTZStef
Вы хотите использовать таблицу поиска или применить формулу для ее получения? – bla