我似乎无法弄清楚这一点: 我需要将矩阵重塑为一个向量,到目前为止,我有这个:
img = imread('image.png');
grayImage = rgb2gray(img);
imageArray = reshape(grayImage, r, c);
输出的内容如下:
imgVector=[1 2 3 4 5 6 7 8 9 0]
我的问题是我需要它做这样的事情:
imgArray=[1 2 3
4 5 6
7 8 9]
重塑为:
imgVector=[1 2 3 6 5 4 7 8 9]
我希望有道理。基本上我需要它解压缩,所以它在下一行之后从左到右,然后从右到左。任何帮助,将不胜感激。提前谢谢。
答案 0 :(得分:2)
从根本上说,你要做的就是从左到右翻转每一行,这样内置函数fliplr就可以了。
要一步完成,只需选择索引操作中的每一行:
>> imgArray=[1 2 3; 4 5 6; 7 8 9]
imgArray =
1 2 3
4 5 6
7 8 9
>> imgArray(2:2:end,:)=fliplr(imgArray(2:2:end,:))
imgArray =
1 2 3
6 5 4
7 8 9
然后你可以通过重塑将其变成一个矢量。
imgVector=reshape(imgArray',1,[]);
#%transpose the array----^
由于重组是按列完成的,因此首先转置数组以获得所需的格式。
答案 1 :(得分:1)
您可以使用fliplr函数,它反转向量的顺序。 这是一个简单的例子:
A = [1 2 3;4 5 6;7 8 9];
A =
1 2 3
4 5 6
7 8 9
A(2,:) = fliplr(A(2,:));
A =
1 2 3
6 5 4
7 8 9
因此可以为整个图像使用循环翻转每隔一行。希望有所帮助!