说我有一个矩阵,我想更改其元素。如何告诉MATLAB在(i,j)
位置上元素?为了 示例:
matrix(i;j) ---> if i=j (then do something for example matrix(i;j)^2
else ( do something else)
matrix=rand(n)
if (i=j)
matrix(i,j)=(matrix(i.j))^
else matrix(i,j)=matrix(i,j)*3
end
现在如何到达矩阵的对角线?我是Matlab的新手,我还没有找到答案:我正在寻找提示或其他内容,但我无法使用循环!嘿,我得到了答案,但可以说我也希望相反的对角线在广场上我该怎么做?请任何帮助
> if a=1 2 3
> 4 5 6
> 7 8 9 i want a at the end to be a= 1 6 9
> 12 25 18
> 49 24 81
很明显,您不知道MATLAB的基础知识。在这里,我将尝试解释您需要的内容,但我鼓励您阅读编程MATLAB的基本文档。
如果您的矩阵称为A
,则可以通过该元素的索引(行和列数(访问每个元素,例如A(2,3)
为您提供第二行和第三列的元素。
diag(A)
也将A
的所有对角线元素作为向量。
您提到的可以以不同的方式完成,其中一些比其他方式更有效,但对于初学者来说可能更困难。最简单的方法之一是使用两个陆路。当第二个循环移动在矩阵的行上,而第二个循环在列上移动。目标是一一检查所有元素。
在这里,我们使用两个变量ii
和jj
来计数矩阵行和列。 ii
在行上移动,因此它必须从矩阵所具有的1个行数量数为1。对于使用变量jj
的列也是如此。此外,要查找矩阵的行数和列的数量,我们使用函数size
。
在两个前循环中,我们检查了元素是否在主角上是用ii==jj
,如果不是,则您对该元素做其他事情。
for ii=1:size(A,1)
for jj=1:size(A,2)
if ii==jj
A(ii,jj) = A(ii,jj)^2;
else
A(ii,jj) = A(ii,jj)*3;
end
end
end
更有效的解决方案如下:
diag(diag(A)).^2 + (tril(A,-1)+triu(A,1))*3
FIR部分计算一个对角矩阵,其元素在A
的主对角线上。第二部分获得了矩阵的上部和下三角部分。
示例:
A = [1 2 3 4;
1 2 3 4;
4 3 2 1;
4 3 2 1];
>> diag(diag(A))
ans =
1 0 0 0
0 2 0 0
0 0 2 0
0 0 0 1
>> (tril(A,-1)+triu(A,1))
ans =
0 2 3 4
1 0 3 4
4 3 0 1
4 3 2 0
其中
diag(diag(A)) + (tril(A,-1)+triu(A,1)) equals to A