假设我有一个矩阵,我想改变它的元素。我怎么能告诉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
作为向量的所有对角线元素。
您提到的可以通过不同的方式完成,其中一些比其他方式更有效,但对于初学者来说可能更困难。最简单的方法之一是使用两个 for 循环。第一个循环在矩阵的行上移动,而第二个循环在列上移动。目标是一一检查所有元素。
在这里,我们使用两个变量ii
和jj
来计算矩阵的行和列。ii
在行上移动,因此它必须从 1 计数到矩阵的行数。对使用变量的列也是如此jj
。此外,为了找到矩阵的行数和列数,我们使用函数size
。
在两个 for 循环中,我们检查元素是否在主对角线上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
第一部分计算一个对角矩阵,其中的元素位于 的主对角线上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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句