Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 创建方形单位矩阵_Matlab_Matrix - Fatal编程技术网

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上查看文章。不要错过“预分配变量”一节。