Matlab 如何使矩阵的对角线等于另一个natrix对角线?
我想得到这个:如果Matlab 如何使矩阵的对角线等于另一个natrix对角线?,matlab,Matlab,我想得到这个:如果 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 这意味着对角线,我用正方形做的,也是相反的对角线 矩阵中的其他元素我用3乘以。。所以我 到目前为止: 如果我在c
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
这意味着对角线,我用正方形做的,也是相反的对角线
矩阵中的其他元素我用3乘以。。所以我
到目前为止:
如果我在comand窗口中执行此操作,则此操作有效,但我希望将其作为
功能!提前谢谢
使用逻辑索引更容易。如果要将其用作函数,只需使用
function a=myfunc(a)
使用逻辑索引的一种更短、计算更快的替代方法是使用元素级乘法和元素级幂
% function b = myfun(a)
n = 10000
a = randi(10,n);
I = eye(size(a,1),'logical');
b = a.^2.*I + a.*3.*~I;
% end
您的格式化有点疯狂,请考虑将帖子正确格式化。如果我将我编写的内容放入函数中,它将无法工作,因为行c(1:n+1:n^2)=0,这就是我的问题!
% random matrix
n = 5;
A = randi(10,n);
% here you can do:
% function A = myfunc(A)
% diagonal indexes
diagIdxs1 = eye(size(A),'logical');
diagIdxs2 = fliplr(diagIdxs1);
diagIdxs = diagIdxs1 | diagIdxs2;
% do operations on diagonals and on non-diagonals
A(diagIdxs) = A(diagIdxs).^2;
A(~diagIdxs) = A(~diagIdxs).*3;
% function b = myfun(a)
n = 10000
a = randi(10,n);
I = eye(size(a,1),'logical');
b = a.^2.*I + a.*3.*~I;
% end