我必須創建一個矩陣,其中199,409,619,... 210n-11沿着對角線和零點遍及其他地方。在MATLAB中,如何使用nxn矩陣在其他地方使用整數和零來創建對角線
這裏是我的M檔至今:
function A = MyDiagMatrix(n)
A = zeros(n,n);
for i =199:210:210n-11
eye(i);
end
end
我究竟做錯了什麼?任何幫助將是偉大的!
我必須創建一個矩陣,其中199,409,619,... 210n-11沿着對角線和零點遍及其他地方。在MATLAB中,如何使用nxn矩陣在其他地方使用整數和零來創建對角線
這裏是我的M檔至今:
function A = MyDiagMatrix(n)
A = zeros(n,n);
for i =199:210:210n-11
eye(i);
end
end
我究竟做錯了什麼?任何幫助將是偉大的!
首先你的函數初始化矩陣,A,但是之後什麼都不做。您需要修改A的條目以使函數返回比零矩陣更多的東西。
您可以使用MATLAB的函數diag,該函數根據矢量創建對角矩陣。例如
d=1:n; %# create vector 1,2,...,n
A = diag(d) %# create diagonal matrix with entries A(i,i) = i with i=1,2,...,n;
修改輸入向量d如果你想把它當作一個函數適合您的需求
...
function [ a ] = MyDiagonalMatrix(n)
a = diag(199:210:210*n-11);
end
附:這應該歸功於Azim。
以下是你需要的功能:
@(n) diag(199:210:210*n-11)
而如調用它的:
MyDiagonalMatrix(3)
在MATLAB R2012a
實際測試:
>> MyDiagonalMatrix = @(n) diag(199:210:210*n-11)
MyDiagonalMatrix =
@(n)diag(199:210:210*n-11)
>> MyDiagonalMatrix(3)
ans =
199 0 0
0 409 0
0 0 619
>> MyDiagonalMatrix(5)
ans =
199 0 0 0 0
0 409 0 0 0
0 0 619 0 0
0 0 0 829 0
0 0 0 0 1039
它們符合您的要求: 「n×n的矩陣,199,409,619,... 210N-11的向下對角線和其他地方的零點。「
希望有幫助!
等待,所以你只是想創建一個N×N大小的矩陣,在對角線上它將全部爲零。什麼是199:210:210n-11 – Kevin
Rook解決了你的問題,Azim解釋了它的工作原理。還要注意,'210n'在MATLAB中不起作用,而不是你需要明確說出'210 * n'的隱含乘法。 –