reshape 函数在 MATLAB 中是一个非常有用的函数,通过重新排列现有元素来重构数组。它允许你重新调整数组(或矩阵)的尺寸,而不改变其数据。这个函数特别适用于当你需要将一个矩阵或数组从一种结构转换为另一种结构时,只要这两种形状的总元素数量相同即可。
基本用法:
B =reshape(A,sz)
B =reshape(A,sz1,...,szN)
B=reshape(A,sz)用大小向量z重构A以定义size(B)。例如,reshape(A,[2,3])将A重构为一个 2×3 矩阵。sz必须至少包含 2 个元素,prod(sz)必须与numel(A)相同。注意重构矩阵是先从列开始排列!
如:>> A=[1 2 3 4 5 6]
>> B=reshape(A,[2 3])
运行结果为:
B=reshape(A,sz1,...,szN)将A重构为一个sz1×...×szN数组,其中sz1,...,szN指示每个维度的大小。可以指定[]的单个维度大小,以便自动计算维度大小,以使B中的元素数与A中的元素数相匹配。例如,如果A是一个 10×10 矩阵,则reshape(A,2,2,[])将A的 100个元素重构为一个 2×2×25 数组。
在应用MATLAB 中经常需要获得二位矩阵,有时采用reshape可以简化编程。
如要生成如下矩阵:
常用的方法可以赋处置并通过双循环得到,代码如下:
clear all;
close all;
clc;
I=zeros(10,10);
count=1
for i=1:1:10;
for j=1:1:10;
I(i,j)=count;
count=count+1;
end
end
disp('显示矩阵');
I
figure,imshow(I,[]);
部分运行结果如下:
但上面程序稍显复杂,可以使用MATLAB的reshape将向量重构为矩阵,方法简单且易于理解。
代码如下:
I=1:1:100;%生成向量
I2=reshape(I,10,10);%将向量重构为10×10矩阵
Ireconstruct=I2';
disp('显示重构矩阵');
Ireconstruct
运行结果如下:
reshape也可将多维数组重构为矩阵,如下所示:
>> D=rand(2,4,2);
>> Dreshape=reshape(A,6,2);
当然reshape也可将多维数组重构为向量,如下所示:
>> E=[1 2 3;4 5 6;7 8 9];
>> Ereshape=reshape(E,1,[]);
运行结果如下:
如果大家觉得本文对大家编程和学习有帮助,请点赞、收藏和关注,谢谢大家!