如何在没有MATLAB的转置工具的情况下转置矩阵

时间:2013-03-21 03:06:49

标签: matlab

我有一张图片,我已将其列为矩阵。我想对该图像进行转置,然后在屏幕上显示该图像。

我想知道如何以“硬”的方式做到这一点,即不使用MATLAB的转置函数。

5 个答案:

答案 0 :(得分:6)

function [B] = trans(A)
[r c] = size(A);
B = zeros(c,r);
for i = 1:r
    for j = 1:c
        B(j,i) = A(i,j)
    end
end
end

答案 1 :(得分:1)

由于这是一堂课,我不会给你一个确切的答案,但我会把你推向正确的方向。我假设您正在寻找一种涉及手动转置信息的方法,而不是使用内置函数。

Matlab以向量和“大小”的形式将值存储在矩阵中 - 例如,2x3矩阵将在向量中存储六个值,然后[2,3](内部)告诉它它是2x3而不是6x1。

对于2x3矩阵,这是向量中值的顺序:

1 3 5
2 4 6

要引用(2,2)中的值,可以将其引用为A(2,2)或A(4)。 (1,3)中的值可以引用为A(5)。

因此,如果您可以构建引用转置顺序中的值的向量,则可以将新值分配到适当的顺序并将它们存储在适当大小的矩阵中。为了说明问题,请考虑上述矩阵的转置:

1 2
3 4
5 6

这将表示为(1,3,5,2,4,6),大小为(3,2)。如果你可以构造向量(1,3,5,2,4,6),那么你可以使用该向量来适当地赋值。

答案 2 :(得分:0)

以下是解决方案的提示:转置将元素A(1,2)从正常数组A转换为转置数组B(2,1)中的元素B({{1} }),反之亦然。因此,您可以遍历所有行和列,并逐个元素地应用转换。

答案 3 :(得分:0)

您是否可以使用flipudfliplr? 在这种情况下,您可以将转置表示为翻转序列(我将留给您以确定确切的序列)。

答案 4 :(得分:-1)

你可以使用rot90和flipud / fliplr。