دستور reshape در متلب
دستور reshape ابزار قدرتمندی برای تغییر ابعاد دادهها و مدیریت آنها در فرآیندهای مختلف محاسباتی در نرمافزار متلب است. با درک عمیق این دستور و توانایی استفاده صحیح از آن، میتوان در بهینهسازی پردازش دادهها و توسعه الگوریتمهای پیچیده هره برد. این دستور دادهها را به شکلی جدید سازماندهی میکند و در واقع برای تغییر ابعاد یک آرایه بدون تغییر دادههای آن استفاده میشود. دستور reshape بصورت خودکار فضای حافظه را مدیریت میکند و از نظر عملکرد بسیار کارآمد است. لذا در مدیریت دادههای بزرگ، برای تحلیل و تجزیه و تحلیل دادههای حجیم، تغییر ابعاد دادهها میتواند به بهینهسازی حافظه و پردازش کمک کند. دستور reshape برای تغییر ابعاد تصاویر، به خصوص هنگام کار با تصاویر رنگی و پردازش تصویر، بسیار موثر است.
دستور reshape در متلب ابزار قدرتمندی برای تغییر شکل ماتریس ها است و در پروژه های مختلف از این دستور استفاده میشود که در انجام پروژه متلب نیز بسیار کاربردی است. شما میتوانید فقط با یک پیامک در پروژستان با متخصصان ما در ارتباط باشید.
ساختار دستور reshape بصورت زیر است:
R = reshape(A, [a,b])
که در آن A آرایه ورودی است و [a,b] ابعاد جدید آرایه خروجیR را مشخص میکنند.
مثال 1: تغییر ابعاد ماتریس A
clc; clear; close all
A = [1, 8, 3, 14, 0.5, 9, 0, 2];
R = reshape(A, [4,2]);
disp(R)
خروجی برنامه:
1.0000 0.5000
8.0000 9.0000
3.0000 0
14.0000 2.0000
توضیح: ماتریس A که دارای ابعاد [1,8] است که به ماتریس R با ابعاد [4,2] تبدیل میشود.
مثال 2: تبدیل به آرایه سهبعدی
clc; clear; close all
A = 1:20;
R = reshape(A, [2,5,2]);
disp(R)
خروجی برنامه:
(:,:,1) =
1 3 5 7 9
2 4 6 8 10
(:,:,2) =
11 13 15 17 19
12 14 16 18 20
توضیح: ماتریس A که دارای ابعاد [1,20] است که به ماتریس R با ابعاد [2,5,2] تبدیل میشود. باید توجه شود که در این دو ماتریس ضرب ابعاد دو ماتریس اولیه A و ماتریس حاصل R با هم برابر باشند یعنی:
1*20=2*5*2
والا متلب خطای زیر را خواهد داد:
Error using reshape
To RESHAPE the number of elements must not change.
مثال 3: تغییر ابعاد به صورت خودکار: میتوان از [] برای یکی از ابعاد استفاده کرد تا متلب به طور خودکار آن بعد را محاسبه کند. هر چند ممکن است در برخی ویرژن های پایین تر از Matlab-R2019 این موضوع تعریف نشده باشد و Error مثال قبل را بدهد.
clc; clear; close all
A = 1:12;
R = reshape(A, [3, 4]);
X = reshape(A, [2, 3, 2]);
Y = reshape(A, [1, 6, []]);
disp(‘R=’)
disp(R)
disp(‘X=’)
disp(X)
disp(‘Y=’)
disp(Y)
خروجی برنامه:
R=
1 4 7 10
2 5 8 11
3 6 9 12
X=
(:,:,1) =
1 3 5
2 4 6
(:,:,2) =
7 9 11
8 10 12
Y=
(:,:,1) =
1 2 3 4 5 6
(:,:,2) =
7 8 9 10 11 12
بعد سوم ماتریس Y که بصورت [] است، به طور خودکار محاسبه میشود.
مثال4: تحلیل دادههای تصویری:
clc; clear; close all
img = imread(‘corn.tif’);
[rows, cols, ~] = size(img);
reshaped_img = reshape(img, [rows*cols/120,120]);
figure(1)
imshow(img)
figure(2)
imshow(reshaped_img)
خروجی برنامه:
توضیح: عکس خروجی شامل اطلاعات عکس ورودی است ولی ابعاد آن reshape شده است.
مثال 5: تبدیل ماتریس به بردار:
clc; clear; close all
A = rand(4);
R = reshape(A, [], 1);
disp(R)
خروجی برنامه:
0.2760 0.6797 0.6551 0.1626 0.1190 0.4984 0.9597 0.3404 0.5853
توضیح: ماتریس A که دارای ابعاد [4,4] است به یک بردار به نام R به ابعاد [1,8] تبدیل شده است.
مثال6: دستکاری دادههای سنجش:
clc; clear; close all
data = rand(4, 3, 2);
reshaped_data = reshape(data, [], 2);
disp(R)
خروجی برنامه:
0.2277 0.5949
0.4357 0.2622
0.3111 0.6028
0.9234 0.7112
0.4302 0.2217
0.1848 0.1174
0.9049 0.2967
0.9797 0.3188
0.4389 0.4242
0.1111 0.5079
0.2581 0.0855
0.4087 0.2625
توضیح: ماتریس data که دارای ابعاد [4,3,2] است به یک ماتریس R به ابعاد [12,2] تبدیل شده است.


