我有一张图片,我已将其列为矩阵。我想对该图像进行转置,然后在屏幕上显示该图像。
我想知道如何以“硬”的方式做到这一点,即不使用MATLAB的转置函数。
答案 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)
答案 4 :(得分:-1)
你可以使用rot90和flipud / fliplr。