matlab将整数编码为0&s和1&#39s的向量矩阵

时间:2014-10-19 08:56:40

标签: matlab encoding

我有一个1118x1的矢量值,从0到10,如下:
5
5
3
4
7
4
1


我需要将每个值编码为11x1118零的矩阵,其中k + 1的值为1 例如,第一个值是5,因此第一列中的5 + 1 = 6值为1 0
0
0
0
0
1
0
0
0
0
0
 我需要为1118之前的所有值执行此操作 我假设我只需要一个for循环,但我完全迷失了如何做到这一点

2 个答案:

答案 0 :(得分:1)

您可以使用例如sub2ind。请尝试以下代码:

x = [4;3;1;1;4;7];
y = zeros(11,numel(x));
y(sub2ind(size(y),x+1,(1:numel(x))')) = 1

y =

     0     0     0     0     0     0
     0     0     1     1     0     0
     0     0     0     0     0     0
     0     1     0     0     0     0
     1     0     0     0     1     0
     0     0     0     0     0     0
     0     0     0     0     0     0
     0     0     0     0     0     1
     0     0     0     0     0     0
     0     0     0     0     0     0
     0     0     0     0     0     0

答案 1 :(得分:0)

使用循环的直接方法:

v = [5 5 3 4 7 4 1...]; # your vector
M = zeros(11, length(v)); # the final matrix
for i = 1:length(v)
    e = v(i);
    M(e + 1, i) = 1;
end