从排序到二元选择矩阵的函数编程
Function programming from a ranking to binary choice matrix
我在 MATLAB 中编写函数时遇到了一些困难。我想构建一个将给定排名转换为二元选择矩阵的函数。例如,当 3 个选项在 R(3,1,2) 中排名时,二元选择矩阵应该是
[0 1 0;
0 0 0;
1 1 0]
因此,当元素 i
继续元素 j
时,矩阵元素 a(i,j)
为 1
,否则为 0
。谁能帮我创建这个功能吗?
你想要类似的东西。
B=zeros(length(R)); %create an nxn matrix
for j=2:length(R)
B(R(1:j-1), R(j))=1;
end
我不确定我是否理解问题,但这似乎符合您的要求:
r = [3 1 2]; %// ranking
[~, s] = sort(r);
M = bsxfun(@gt, s, s.');
我在 MATLAB 中编写函数时遇到了一些困难。我想构建一个将给定排名转换为二元选择矩阵的函数。例如,当 3 个选项在 R(3,1,2) 中排名时,二元选择矩阵应该是
[0 1 0;
0 0 0;
1 1 0]
因此,当元素 i
继续元素 j
时,矩阵元素 a(i,j)
为 1
,否则为 0
。谁能帮我创建这个功能吗?
你想要类似的东西。
B=zeros(length(R)); %create an nxn matrix
for j=2:length(R)
B(R(1:j-1), R(j))=1;
end
我不确定我是否理解问题,但这似乎符合您的要求:
r = [3 1 2]; %// ranking
[~, s] = sort(r);
M = bsxfun(@gt, s, s.');