2013-03-21 102 views
0

我有一个图像,我已列为矩阵。我想要转换该图像,然后在屏幕上显示该图像。如何转置矩阵没有MATLAB的转置工具

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

+8

为什么使用Matlab?使用C或更好,组装。 Matlab的目的是做到这一点简单的方法... – bla 2013-03-21 03:18:38

+6

你想避免'转置(x)'? 'x''怎么样?那么'permute(x,[2 1])''呢?避免“简单的方式”毫无意义......需要更多的背景才能真正提供答案。 – tmpearce 2013-03-21 03:19:41

+0

这是矩阵方法类的赋值的一部分...我们应该找到图像矩阵的转置并显示它。我是一个MATLAB新手。 – user2192778 2013-03-21 03:28:08

回答

1

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

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

对于2×3矩阵,这是值的矢量的顺序为:

1 3 5 
2 4 6 

为了引用在(2,2)的值,可以参考它为A(2,2),或作为A(4)。 (1,3)中的值可以被引用为A(5)。因此,如果您可以构建一个引用转置顺序中的值的向量,那么您可以将新值分配到适当的顺序并将它们存储在适当大小的矩阵中。为了使点,考虑上述矩阵的转置:与大小(3,2)

1 2 
3 4 
5 6 

这将被表示为(-1,3,5,2,4,6-)。如果您可以构建矢量(1,3,5,2,4,6),则可以使用该矢量来适当地分配值。

0

这里是朝向溶液暗示:转置从转置阵BB=A')将来自正常阵列A元件A(1,2)入元件B(2,1),反之亦然。因此,您可以遍历所有行和列,并逐个应用转换。

0

您允许使用flipudfliplr
在这种情况下,您可以将转置表示为一系列翻转(我会让您找出确切的顺序)。

+0

我看不出这应该如何工作。单个操作在它们自己和它们之间的行之间交换列,它们从不交换列和行。 – 2014-05-02 03:00:10

5
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

您可以使用rot90与flipud/fliplr为此。

+2

您可能需要详细说明。 – guness 2014-11-17 04:18:59