2013-03-21 104 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