y = 3
6
2
7
我希望将其转换为矩阵,其中y中的每一行都成为一个热矢量:
y = 0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0
我不想使用任何循环。显然,矢量化甚至比必须按元素做事更好。但到目前为止我只是:
y./[1 2 3 4 5 6 7 8 9]
ans =
3.00000 1.50000 1.00000 0.75000 0.60000 0.50000 0.42857 0.37500 0.33333
6.00000 3.00000 2.00000 1.50000 1.20000 1.00000 0.85714 0.75000 0.66667
2.00000 1.00000 0.66667 0.50000 0.40000 0.33333 0.28571 0.25000 0.22222
7.00000 3.50000 2.33333 1.75000 1.40000 1.16667 1.00000 0.87500 0.77778
给了我所有的但没有零。
答案 0 :(得分:0)
你可以过滤掉所有的:
y = [3; 6; 2; 7];
(y./[1 2 3 4 5 6 7 8 9]) == 1
给出
ans =
0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0