-1
在MATLAB中編寫函數時遇到一些困難。我想構建一個函數,將給定的排名轉換爲二元選擇矩陣。例如,當3個選項中的排序R(3,1,2)的排名二元選擇矩陣應該是從排名到二元選擇矩陣的函數編程
[0 1 0;
0 0 0;
1 1 0]
因此,當元件i
前進元件j
,矩陣元件a(i,j)
是1
和0
否則。任何人都可以幫我創建這個功能嗎?
在MATLAB中編寫函數時遇到一些困難。我想構建一個函數,將給定的排名轉換爲二元選擇矩陣。例如,當3個選項中的排序R(3,1,2)的排名二元選擇矩陣應該是從排名到二元選擇矩陣的函數編程
[0 1 0;
0 0 0;
1 1 0]
因此,當元件i
前進元件j
,矩陣元件a(i,j)
是1
和0
否則。任何人都可以幫我創建這個功能嗎?
我不知道我理解的問題,但這似乎做你想要什麼:
r = [3 1 2]; %// ranking
[~, s] = sort(r);
M = bsxfun(@gt, s, s.');
你想要類似的東西。
B=zeros(length(R)); %create an nxn matrix
for j=2:length(R)
B(R(1:j-1), R(j))=1;
end
我認爲你需要在你的你如何給定'是矩陣的解釋擴大[3,1,2]'。一點也不清楚。 – Dan
這是一個例子,有3個選項被排名。選項3優於選項1和2,優先選項1優於2。我想用給定長度的類似排名N做到這一點。 – Laurence
但是數字3,2,1如何成爲二進制矩陣?它是否與行有關?列?你需要正確解釋你的映射。 – Dan