Matlab 创建方形单位矩阵
编写一个名为Matlab 创建方形单位矩阵,matlab,matrix,Matlab,Matrix,编写一个名为identity的函数,该函数创建一个正方形的identity矩阵,该矩阵的元素为0,对角线上的元素(从左上到右下)的值为1。对角线由行和列索引相同的元素组成:(1,1)、(2,2)等 该函数接受一个正整数输入参数(即矩阵的大小),并将矩阵本身作为输出参数返回 例如,标识(4)必须返回一个4乘4的标识矩阵 不允许使用内置的eye或diag功能 (提示:您可以使用单个索引将其索引到矩阵中,MATLAB将使用列主顺序将其当作向量处理。)假设您可以使用内置函数zeros(),则eye()功
identity
的函数,该函数创建一个正方形的identity矩阵,该矩阵的元素为0,对角线上的元素(从左上到右下)的值为1。对角线由行和列索引相同的元素组成:(1,1)、(2,2)等
该函数接受一个正整数输入参数(即矩阵的大小),并将矩阵本身作为输出参数返回
例如,标识(4)
必须返回一个4乘4的标识矩阵
不允许使用内置的eye
或diag
功能
(提示:您可以使用单个索引将其索引到矩阵中,MATLAB将使用列主顺序将其当作向量处理。)假设您可以使用内置函数
zeros()
,则eye()
功能的可能实现如下:
function matrix = identity(n)
out = zeros(n);
idx = 1:n+1:n^2;
out(idx) = 1;
matrix = out;
end
让我们用两行简单的代码来完成,不使用
zero
。。。第一行创建一个nxn
矩阵,其中所有元素都是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
与任何其他语言几乎相同的代码…这很容易实现,听起来像是家庭作业。你的研究成果在哪里?之后请阅读并编辑您的问题。展示您迄今为止所做的尝试以及解决此问题的想法。或者您可以这样做
fix(corrcoef(rand(10,10))
:)这不是一个好方法,但它可以满足您的需要。您知道吗,如果a(n,n)=0
和a=0(n)
之间存在性能差异吗?哇,我刚刚测试了这个,对于N=10000
,您的方法需要0.000255秒,而0(N)
需要1.106566秒。我一直认为,标准的方法是使用zero(N)
@sonystarmap在未记录的Matlab上查看文章。不要错过“预分配变量”一节。