編寫一個名爲identity
的函數,該函數創建一個正方形單位矩陣,該矩陣的元素爲0,但對角線上的元素(從左上角到右下角)的值爲1。對角線由行列索引相同的元素組成:(1,1),(2,2)等。創建一個正方形標識矩陣
函數帶有一個正整數輸入參數,它是矩陣的大小,並返回矩陣本身作爲輸出參數。
例如,identity(4)
必須返回一個4×4的單位矩陣。
您不允許使用內置的eye
或diag
功能。
(提示:你可以索引到一個單一的指標和MATLAB將處理它,彷彿它是用列主順序的載體基質。)
編寫一個名爲identity
的函數,該函數創建一個正方形單位矩陣,該矩陣的元素爲0,但對角線上的元素(從左上角到右下角)的值爲1。對角線由行列索引相同的元素組成:(1,1),(2,2)等。創建一個正方形標識矩陣
函數帶有一個正整數輸入參數,它是矩陣的大小,並返回矩陣本身作爲輸出參數。
例如,identity(4)
必須返回一個4×4的單位矩陣。
您不允許使用內置的eye
或diag
功能。
(提示:你可以索引到一個單一的指標和MATLAB將處理它,彷彿它是用列主順序的載體基質。)
假設你可以使用內置的功能zeros()
,一可能實施方案eye()
funtion的是以下之一:
function matrix = identity(n)
out = zeros(n);
idx = 1:n+1:n^2;
out(idx) = 1;
matrix = out;
end
讓我們做兩個簡單的線條和沒有zeros
...第一行創建一個n x n
矩陣,其中所有元素都0
。之後,你可以(如你的提示所述)用單一參數來處理元素。身份矩陣中的距離爲n+1
。這樣你就可以用提到的距離寫出直到最後的距離。
function out = identity(n)
out(n,n) = 0;
out(1:n+1:end) = 1;
end
你可以從基礎開始:
function M = identity(n)
M = zeros(n);
for i=1:n
M(i,i) = 1;
end
end
幾乎相同的代碼,任何其他語言...
這是很容易實現和聽起來像功課。你的研究工作在哪裏?請閱讀[如何問](http://stackoverflow.com/help/how-to-ask)並編輯您的問題。展示你迄今爲止所嘗試的以及你的想法是如何解決這個問題的。 – Matt
或者你可以這樣做'修復(corrcoef(rand(10,10)))':)這不是一個好方法,但它會做你需要的。 – patrik