编写一个函数codedgt,它将带有整数条目的列或行向量作为输入,并产生一个行向量作为输出,其中每个整数根据下表进行编码
整数编码 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 ...等等。
和规则codedgt(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]
所以我已经编写了一个可以正常编号的脚本,以下是......
function x = encodedgt(x)
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)))'
端
然而,我并不完全确定如何使用负数。正如问题告诉我的那样,当x <1时,codedgt(x)= 1 - encodedgt( - (x + 1))。所以我考虑使用if语句,但是它并没有完全按照计划出来。有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
你的问题不是很具体,所以很难确切知道你需要什么。您需要的一些工具:
如何连接向量。为此,请使用cat或仅使用以下方法:
sequence = [0 0 1 1 0 0 1];
sequence = [sequence [0 0 1 0 0 1 1]]sequence = 0 0 1 1 0 0 1 0 0 1 0 0 1 1
如何遍历向量。为此,请用于:
函数(x)的
对于i = x
%做你需要的,就像查找i来获得它的编码向量 端