风落平川 2024-03-21 20:02 采纳率: 96.8%
浏览 15
已结题

matlab如何自行编写矩阵上下翻转的函数?


function y=overturnlr(x)
n=size(x,1);
y=x(n:-1:1,:);
end

自己编写了左右翻转的运行正常,上下翻转函数如下

function y=overturnud(x)
n=size(x,2);
y=x(:,n:-1:1);
end

运行结果还是左右翻转,是哪里错了?

>> A

A =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

>> A2=overturnud(A)

A2 =

    15     8     1    24    17
    16    14     7     5    23
    22    20    13     6     4
     3    21    19    12    10
     9     2    25    18    11

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-21 20:02
    关注

    引自免费微信小程序:皆我百晓生

    在你给出的上下翻转函数中,错误在于对矩阵进行索引时使用了列索引而非行索引。对于矩阵的上下翻转,你需要保留列不变,改变行的位置。因此,正确的上下翻转函数应该按照以下方式编写:

    function y=overturnud(x)
    n=size(x,1); % 获取矩阵x的行数
    y=x(n:-1:1,:); % 使用行索引进行翻转
    end
    

    现在,当你用这个修正后的函数对矩阵A进行上下翻转时,将得到期望的结果:

    A =
    
        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
        11    18    25     2     9
    
    A2 = overturnud(A);
    
    A2 将会是:
    
        11    18    25     2     9
        10    12    19    21     3
         4     6    13    20    22
        23     5     7    14    16
        17    24     1     8    15
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月21日