【问题标题】:Inverse function for flipudFlipud 的反函数
【发布时间】:2017-01-07 00:13:00
【问题描述】:

如果我在加密过程中使用flipud()函数,我当然需要在解密过程中使用与之相反的函数。

在MATLAB中是否有任何函数或代码可以执行flipud()函数的逆运算?

【问题讨论】:

  • 逆向不只是......再次翻转它吗?
  • 是的,但我认为应该按照相反的顺序进行。就像,flipud 会从上到下翻转,现在在解密时我需要从下到上。
  • 调用flipud 两次就可以了。用A = rand(100,100);B = all(all(A == flipud(flipud(A))));验证
  • 从下翻到上还是从上翻到下。
  • 我不确定我是否理解,flipud 当然应该是一对一的映射。通过使用相同的方法,这应该是完全可逆的。这听起来很像 XY 问题。所以我想知道,你在这个阶段有什么麻烦吗?在那种情况下,我会假设恶棍是前面的步骤之一。

标签: image matlab encryption


【解决方案1】:

你可以定义一个辅助函数,向下翻转,来完成你需要的:

function [output] = flipdu(A)
%FLIPDU Flip array in down/up direction.
%   OUTPUT = FLIPDU(A) returns A with the order of elements flipped upside down
%   along the first dimension.  For example,
%   
%   A = 1 4      becomes  3 6
%       2 5               2 5
%       3 6               1 4
%
%   See also FLIPLR, ROT90, FLIP, FLIPUD.
output = flipud(A);  % Equivalent to flip(A, 1)
end

【讨论】:

    【解决方案2】:

    只需再次致电flipudflipud 只取矩阵的每一列并颠倒顺序,使最后一行首先出现。要撤消反转,如果您对已经反转的矩阵执行flipud。逆矩阵的最后一行变成了第一行,以此类推,所以你会得到原来的顺序。

    观察:

    >> A = rand(100,100);
    >> B = isequal(A, flipud(flipud(A)))
    
    B =
    
         1
    

    A 是一个随机的 100 x 100 矩阵。我使用isequal 来确保原始矩阵等于该矩阵中每个元素的两次翻转矩阵。但是,如果您不想与名称混淆......如果你真的,真的,真的......我的意思是真的......想要一个“反转”已经反转的矩阵的函数,你可以调用一个名为flipdu 的函数来为你执行这个翻转:

    flipdu = @flipud;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多