問題描述:已知矩陣g,nxk維,獲得矩陣g每一列的元素的秩。此處秩的定義是:將乙個陣列排序後(按公升序或降序),陣列中的元素在排完序的陣列中的序號。實現平台:matlab
首先,編寫獲得乙個陣列的秩的函式。如下
輸入:vector-----陣列或向量
輸出:ordervector----由每個元素的秩所組成的陣列
function ordervector= order_vector(vector)
array=sort(vector,'ascend'); % 獲得排序後的陣列
ordervector=zeros(length(vector),1);
for i=1:length(vector)
temp=find(array==vector(i)); %find()函式,找尋元素在排序後的陣列中的位置,有可能不止乙個,因為可能有重複的元素
if length(temp)~=1 %若有重複的元素
ordervector(i)=temp(1); %重複元素的賦予相同的秩
else
ordervector(i)=temp;
endend
end
下面呼叫上面的函式,獲得g每一列的順序陣列
for i=1:k
l(:,i)=order_vector(g(:,i));
%下面對順序陣列進行修正,因為裡面有重複的秩
x=l(:,i);
array=sort(l(:,i),'ascend'); % 獲得排序後的陣列
for j=1:n
temp=find(x==array(j)); %find()函式,找尋元素在排序後的陣列中的位置,有可能不止乙個,因為可能有重複的元素
if length(temp)~=1 %若有重複的秩
x(temp(1))=array(j); %重複的秩中第乙個不變
for k=2:length(temp) %重複的秩中第乙個不變,後面的秩加1
x(temp(k))=array(j)+1;
endend
endl(:,i)=x; %對順序矩陣的每一列進行更新
end
其實,上面的兩部分可以合起來,寫成乙個函式。如果矩陣中沒有重複元素,上面的函式可以獲得其順序矩陣。如果有重複元素,下面那段程式是對獲取的順序矩陣的後續處理。
獲得順序矩陣的關鍵是:如果矩陣中沒有重複元素的話,比較好操作。如果,有重複元素,需要對重複元素的秩進行處理。
由乙個矩陣得到乙個掩模矩陣
1.假設有乙個不完整的資料,如下 2030251 51830 317810 0232930112 1815 0import pandas as pd import numpy as np read data data pd.read csv data.csv a np.isnan data get ...
乙個魔方矩陣的個人演算法
這樣乙個魔方矩陣 按以下示例方陣格式,生成乙個由自然數1至n 2組成的n階方陣。1 3 4 10 11 2 5 9 12 19 6 8 13 18 20 7 14 17 21 24 15 16 22 23 25 注 n不僅限於5。我的 include using namespace std defi...
求乙個矩陣的逆矩陣 用伴隨矩陣求
題目 noyj774 用代數余子式求逆矩陣方法 若現有矩陣a,要求其逆矩陣 若 a 0,則其不存在逆矩陣 若 a 0,其逆矩陣a 1 a a 其中 a為其伴隨矩陣 伴隨矩陣的求法 a j i m i j 其中m i j 為a i j 的代數余子式 即 a1 i j m i j 再將 a1轉置得到 a...