Matlab利用已知方阵创建斜对角矩阵

Matlab利用已知方阵创建斜对角矩阵

A=[ 1 2 3 4 ;
    7 8 9 10 ;
    13 14 15 16 ;
    19 20 21 22 ];
  1. 对于小矩阵,直接利用for循环解决
n  = size(A,1) ;
B1 = zeros(n,n) ;
for i=1:n
    for j=1:n
        if i==j
            B1(i,j)=A(i,n-i+1);
        elseif j==n-i+1
            B1(i,j)=A(i,i);
        else
            B1(i,j)=A(i,j);
        end
    end
end
B1
  1. 利用Matlab元素编号规则,调换对角线元素和斜对角线元素的序号
n = size(A,1);
% 原始元素编号
idx = 1:n^2;
% 调换序号
idx([1:(n+1):n^2, n^2-n+1:1-n:n] ) = [n^2-n+1:1-n:n, 1:(n+1):n^2];
% 重新生成矩阵
B2 = reshape(A(idx), n, n)
B1 =

     4     2     3     1
     7     9     8    10
    13    15    14    16
    22    20    21    19


B2 =

     4     2     3     1
     7     9     8    10
    13    15    14    16
    22    20    21    19

可以看出两种方法给出了相同的结果。对于规模很大的矩阵,第二种方法比第一种方法会快很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值