关于matlab由已知数列生成新数列的问题

问题描述:

关于matlab由已知数列生成新数列的问题
是这样子的
已知几个数 在这些数中随机取值组成一个数列
例如 在1 2 3 4 中随机取数组成数列A[1 3 3 2 4]
现在我要做的的是将 1拆分为[0 1] 将2拆分为[1 1] 3拆分为[2 1] 4拆分为[3 1]
于是由A得到一个新的数组B[0 1 2 1 2 1 1 1 3 1]
请问在matlab中如何实现上述过程呢?
抱歉举了这么个特殊的例子.
并不是一定将a拆分为[a-1 1]的形式 反正就是拆成两个数的和 把上面的[0 1]换成[1 0] 4换成[2 2]
则B为[1 0 2 1 2 1 1 1 2 2]
谢谢各位朋友的热心回答 我的问题确实像4楼所说 是另外的程序给出的随机数列A 我仔细想了想,3楼的办法应该是自己生成随机数列 有没有办法根据已经给出的随机数列来拆分呢?4楼朋友所说的LogicalOperate函数是matlab自带函数吗?我怎么help不到.可以写一个能直接运行的小例子给我么.感激不尽
终于还是参考4楼的朋友的答案搞出我想要的方法了.
谢谢4楼的朋友.也谢谢3楼朋友,对我很有启发
1个回答 分类:综合 2014-11-02

问题解答:

我来补答
如果是别人随即的给出一组数据 A=[2 4 1 3]
则带入如下函数即可
LogicalOperate(A);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function out=LogicalOperate(input)
upBound=10;%所要变换的数字的种数 应该有个界限界吧
b=zeros(1,length(input)*2);
mapper=[1 0;2 0;3 0];%写出映射阵,1对应1 0,2对应2 0
for i=1:upBound
b((find((input==i))*2-1))=mapper(i,1);
b((find((input==i))*2))=mapper(i,2);
end
b
%%%%%%%%%%%%%%%%%%%% END %%%%%%%%%%%%%%%%%%%%
 
 
展开全文阅读
剩余:2000