How would I transform a 5-dimensional vector into a 3-dimensional vector?

17 vues (au cours des 30 derniers jours)
Connor Mondock
Connor Mondock le 4 Fév 2022
Commenté : Voss le 4 Fév 2022
How would I transform a 5-dimensional vector into a 3-dimensional vector? An example would be very helpful, but I really do not know how to do this.

Réponses (1)

Voss
Voss le 4 Fév 2022
How you would do it depends on how you want it to work.
For instance, if your 5-dimensional matrix contains two singleton (i.e., of size 1) dimensions that you want to remove, you could use squeeze():
X = randn(5,1,3,1,2);
Y = squeeze(X);
disp(X);
(:,:,1,1,1) = -0.3821 -0.9261 0.0377 -0.3751 0.6377 (:,:,2,1,1) = -0.8345 -0.1924 -0.7902 0.0368 -0.3870 (:,:,3,1,1) = -0.8840 1.3846 -0.6376 0.6339 0.8134 (:,:,1,1,2) = -0.9523 -0.5598 1.0810 0.7166 1.1387 (:,:,2,1,2) = 0.7773 0.3358 -0.5979 1.3993 -0.5095 (:,:,3,1,2) = -0.4363 -0.3040 -0.1557 -1.0283 1.5534
disp(Y);
(:,:,1) = -0.3821 -0.8345 -0.8840 -0.9261 -0.1924 1.3846 0.0377 -0.7902 -0.6376 -0.3751 0.0368 0.6339 0.6377 -0.3870 0.8134 (:,:,2) = -0.9523 0.7773 -0.4363 -0.5598 0.3358 -0.3040 1.0810 -0.5979 -0.1557 0.7166 1.3993 -1.0283 1.1387 -0.5095 1.5534
Or you could use reshape() in that same situation:
Y = reshape(X,[5 3 2]);
disp(Y);
(:,:,1) = -0.3821 -0.8345 -0.8840 -0.9261 -0.1924 1.3846 0.0377 -0.7902 -0.6376 -0.3751 0.0368 0.6339 0.6377 -0.3870 0.8134 (:,:,2) = -0.9523 0.7773 -0.4363 -0.5598 0.3358 -0.3040 1.0810 -0.5979 -0.1557 0.7166 1.3993 -1.0283 1.1387 -0.5095 1.5534
Or even if there are no singleton dimensions, you could use reshape(), but you have to specify how you want this reshaping done:
X = randn(5,2,3,4,2);
disp(X);
(:,:,1,1,1) = -1.5990 -1.4774 -0.2814 -1.0066 -0.1961 0.4082 -0.0850 -0.7829 -1.0714 -0.5700 (:,:,2,1,1) = 0.1118 -1.9138 2.2011 -0.4253 -2.3668 -0.9079 0.4306 0.7721 -0.5925 0.8626 (:,:,3,1,1) = -0.6635 0.2661 -1.1877 1.9580 0.1238 -0.5403 -1.2074 -0.9911 -0.8459 -0.7236 (:,:,1,2,1) = 1.4873 1.1875 0.0843 0.5482 -1.5242 1.5693 -0.5216 1.2928 -0.8007 -0.4383 (:,:,2,2,1) = 1.2575 1.7517 -0.6058 0.0287 1.9479 0.1202 -0.6029 -0.0174 -0.5533 1.0998 (:,:,3,2,1) = -0.3341 0.0497 0.2022 1.1645 1.1306 -1.0376 -0.6294 0.4023 2.2155 -0.8428 (:,:,1,3,1) = -1.9050 -0.0878 -1.3216 -0.7829 -0.0930 0.3349 1.2693 -0.3298 0.4882 0.4263 (:,:,2,3,1) = -0.4462 1.2260 0.0387 0.2094 -0.0832 1.4408 2.0849 -0.5376 0.3471 -1.1520 (:,:,3,3,1) = 1.2225 0.3516 3.5116 0.6621 0.8052 2.6316 -0.1157 1.3297 0.0241 0.4893 (:,:,1,4,1) = 1.3257 -1.1252 -1.2487 1.5519 0.4120 -0.8644 -0.7296 -1.5258 1.2875 0.1905 (:,:,2,4,1) = 0.3836 0.6030 0.8254 0.2551 -0.3455 1.1446 -0.6773 -1.3863 -1.5075 -0.5765 (:,:,3,4,1) = 0.3761 -0.9105 1.4721 -1.1455 0.4240 -0.1831 0.5730 -2.4002 -0.2211 1.8798 (:,:,1,1,2) = -0.2634 -0.5790 -0.2404 -0.9705 1.4386 0.7587 -0.6913 -0.8247 -0.2514 -0.6161 (:,:,2,1,2) = -0.0273 0.1439 1.6814 0.2454 0.8269 -1.0881 -1.1424 0.7971 -2.1742 0.8649 (:,:,3,1,2) = 0.0594 -2.0908 -0.1723 0.2557 -1.1110 -1.5074 0.1578 0.5286 -0.7027 1.9260 (:,:,1,2,2) = -0.3547 0.1481 -0.9297 -1.0064 -0.1334 1.1872 -0.0308 -0.0943 -0.3632 -1.4703 (:,:,2,2,2) = 0.0866 0.0515 0.1770 -1.0495 -1.0910 1.2994 -0.1530 -0.1821 -0.1600 1.6377 (:,:,3,2,2) = 0.8820 -0.5114 -1.6949 0.1523 0.4375 2.1341 -0.3578 -1.5224 -0.4132 0.3853 (:,:,1,3,2) = 0.5756 0.7845 0.5070 -0.0190 -1.6021 -1.7109 0.8970 -2.1029 0.8054 2.3897 (:,:,2,3,2) = -0.4548 -0.4863 -1.7089 -0.4617 1.2106 0.5118 0.1166 -0.3795 -0.8231 0.1280 (:,:,3,3,2) = -0.3409 -1.1771 -1.0191 0.1713 0.8405 0.3731 -1.0565 -1.0445 -0.0011 -0.9263 (:,:,1,4,2) = -0.0527 -1.1203 -1.0325 0.1015 -0.7649 1.2671 0.4507 -0.2430 0.6585 -0.1224 (:,:,2,4,2) = 0.2141 1.1805 -1.3787 0.3057 1.5172 0.2990 0.4007 -0.3995 -0.6900 1.3717 (:,:,3,4,2) = 1.1456 0.1479 -0.4306 -1.7615 0.8234 0.2880 0.3705 -0.0219 0.2025 -0.8276
Y = reshape(X,[10 12 2]);
disp(Y);
(:,:,1) = -1.5990 0.1118 -0.6635 1.4873 1.2575 -0.3341 -1.9050 -0.4462 1.2225 1.3257 0.3836 0.3761 -0.2814 2.2011 -1.1877 0.0843 -0.6058 0.2022 -1.3216 0.0387 3.5116 -1.2487 0.8254 1.4721 -0.1961 -2.3668 0.1238 -1.5242 1.9479 1.1306 -0.0930 -0.0832 0.8052 0.4120 -0.3455 0.4240 -0.0850 0.4306 -1.2074 -0.5216 -0.6029 -0.6294 1.2693 2.0849 -0.1157 -0.7296 -0.6773 0.5730 -1.0714 -0.5925 -0.8459 -0.8007 -0.5533 2.2155 0.4882 0.3471 0.0241 1.2875 -1.5075 -0.2211 -1.4774 -1.9138 0.2661 1.1875 1.7517 0.0497 -0.0878 1.2260 0.3516 -1.1252 0.6030 -0.9105 -1.0066 -0.4253 1.9580 0.5482 0.0287 1.1645 -0.7829 0.2094 0.6621 1.5519 0.2551 -1.1455 0.4082 -0.9079 -0.5403 1.5693 0.1202 -1.0376 0.3349 1.4408 2.6316 -0.8644 1.1446 -0.1831 -0.7829 0.7721 -0.9911 1.2928 -0.0174 0.4023 -0.3298 -0.5376 1.3297 -1.5258 -1.3863 -2.4002 -0.5700 0.8626 -0.7236 -0.4383 1.0998 -0.8428 0.4263 -1.1520 0.4893 0.1905 -0.5765 1.8798 (:,:,2) = -0.2634 -0.0273 0.0594 -0.3547 0.0866 0.8820 0.5756 -0.4548 -0.3409 -0.0527 0.2141 1.1456 -0.2404 1.6814 -0.1723 -0.9297 0.1770 -1.6949 0.5070 -1.7089 -1.0191 -1.0325 -1.3787 -0.4306 1.4386 0.8269 -1.1110 -0.1334 -1.0910 0.4375 -1.6021 1.2106 0.8405 -0.7649 1.5172 0.8234 -0.6913 -1.1424 0.1578 -0.0308 -0.1530 -0.3578 0.8970 0.1166 -1.0565 0.4507 0.4007 0.3705 -0.2514 -2.1742 -0.7027 -0.3632 -0.1600 -0.4132 0.8054 -0.8231 -0.0011 0.6585 -0.6900 0.2025 -0.5790 0.1439 -2.0908 0.1481 0.0515 -0.5114 0.7845 -0.4863 -1.1771 -1.1203 1.1805 0.1479 -0.9705 0.2454 0.2557 -1.0064 -1.0495 0.1523 -0.0190 -0.4617 0.1713 0.1015 0.3057 -1.7615 0.7587 -1.0881 -1.5074 1.1872 1.2994 2.1341 -1.7109 0.5118 0.3731 1.2671 0.2990 0.2880 -0.8247 0.7971 0.5286 -0.0943 -0.1821 -1.5224 -2.1029 -0.3795 -1.0445 -0.2430 -0.3995 -0.0219 -0.6161 0.8649 1.9260 -1.4703 1.6377 0.3853 2.3897 0.1280 -0.9263 -0.1224 1.3717 -0.8276
Y = reshape(X,[5 6 8]);
disp(Y);
(:,:,1) = -1.5990 -1.4774 0.1118 -1.9138 -0.6635 0.2661 -0.2814 -1.0066 2.2011 -0.4253 -1.1877 1.9580 -0.1961 0.4082 -2.3668 -0.9079 0.1238 -0.5403 -0.0850 -0.7829 0.4306 0.7721 -1.2074 -0.9911 -1.0714 -0.5700 -0.5925 0.8626 -0.8459 -0.7236 (:,:,2) = 1.4873 1.1875 1.2575 1.7517 -0.3341 0.0497 0.0843 0.5482 -0.6058 0.0287 0.2022 1.1645 -1.5242 1.5693 1.9479 0.1202 1.1306 -1.0376 -0.5216 1.2928 -0.6029 -0.0174 -0.6294 0.4023 -0.8007 -0.4383 -0.5533 1.0998 2.2155 -0.8428 (:,:,3) = -1.9050 -0.0878 -0.4462 1.2260 1.2225 0.3516 -1.3216 -0.7829 0.0387 0.2094 3.5116 0.6621 -0.0930 0.3349 -0.0832 1.4408 0.8052 2.6316 1.2693 -0.3298 2.0849 -0.5376 -0.1157 1.3297 0.4882 0.4263 0.3471 -1.1520 0.0241 0.4893 (:,:,4) = 1.3257 -1.1252 0.3836 0.6030 0.3761 -0.9105 -1.2487 1.5519 0.8254 0.2551 1.4721 -1.1455 0.4120 -0.8644 -0.3455 1.1446 0.4240 -0.1831 -0.7296 -1.5258 -0.6773 -1.3863 0.5730 -2.4002 1.2875 0.1905 -1.5075 -0.5765 -0.2211 1.8798 (:,:,5) = -0.2634 -0.5790 -0.0273 0.1439 0.0594 -2.0908 -0.2404 -0.9705 1.6814 0.2454 -0.1723 0.2557 1.4386 0.7587 0.8269 -1.0881 -1.1110 -1.5074 -0.6913 -0.8247 -1.1424 0.7971 0.1578 0.5286 -0.2514 -0.6161 -2.1742 0.8649 -0.7027 1.9260 (:,:,6) = -0.3547 0.1481 0.0866 0.0515 0.8820 -0.5114 -0.9297 -1.0064 0.1770 -1.0495 -1.6949 0.1523 -0.1334 1.1872 -1.0910 1.2994 0.4375 2.1341 -0.0308 -0.0943 -0.1530 -0.1821 -0.3578 -1.5224 -0.3632 -1.4703 -0.1600 1.6377 -0.4132 0.3853 (:,:,7) = 0.5756 0.7845 -0.4548 -0.4863 -0.3409 -1.1771 0.5070 -0.0190 -1.7089 -0.4617 -1.0191 0.1713 -1.6021 -1.7109 1.2106 0.5118 0.8405 0.3731 0.8970 -2.1029 0.1166 -0.3795 -1.0565 -1.0445 0.8054 2.3897 -0.8231 0.1280 -0.0011 -0.9263 (:,:,8) = -0.0527 -1.1203 0.2141 1.1805 1.1456 0.1479 -1.0325 0.1015 -1.3787 0.3057 -0.4306 -1.7615 -0.7649 1.2671 1.5172 0.2990 0.8234 0.2880 0.4507 -0.2430 0.4007 -0.3995 0.3705 -0.0219 0.6585 -0.1224 -0.6900 1.3717 0.2025 -0.8276
Y = reshape(X,[5 2 24]);
disp(Y);
(:,:,1) = -1.5990 -1.4774 -0.2814 -1.0066 -0.1961 0.4082 -0.0850 -0.7829 -1.0714 -0.5700 (:,:,2) = 0.1118 -1.9138 2.2011 -0.4253 -2.3668 -0.9079 0.4306 0.7721 -0.5925 0.8626 (:,:,3) = -0.6635 0.2661 -1.1877 1.9580 0.1238 -0.5403 -1.2074 -0.9911 -0.8459 -0.7236 (:,:,4) = 1.4873 1.1875 0.0843 0.5482 -1.5242 1.5693 -0.5216 1.2928 -0.8007 -0.4383 (:,:,5) = 1.2575 1.7517 -0.6058 0.0287 1.9479 0.1202 -0.6029 -0.0174 -0.5533 1.0998 (:,:,6) = -0.3341 0.0497 0.2022 1.1645 1.1306 -1.0376 -0.6294 0.4023 2.2155 -0.8428 (:,:,7) = -1.9050 -0.0878 -1.3216 -0.7829 -0.0930 0.3349 1.2693 -0.3298 0.4882 0.4263 (:,:,8) = -0.4462 1.2260 0.0387 0.2094 -0.0832 1.4408 2.0849 -0.5376 0.3471 -1.1520 (:,:,9) = 1.2225 0.3516 3.5116 0.6621 0.8052 2.6316 -0.1157 1.3297 0.0241 0.4893 (:,:,10) = 1.3257 -1.1252 -1.2487 1.5519 0.4120 -0.8644 -0.7296 -1.5258 1.2875 0.1905 (:,:,11) = 0.3836 0.6030 0.8254 0.2551 -0.3455 1.1446 -0.6773 -1.3863 -1.5075 -0.5765 (:,:,12) = 0.3761 -0.9105 1.4721 -1.1455 0.4240 -0.1831 0.5730 -2.4002 -0.2211 1.8798 (:,:,13) = -0.2634 -0.5790 -0.2404 -0.9705 1.4386 0.7587 -0.6913 -0.8247 -0.2514 -0.6161 (:,:,14) = -0.0273 0.1439 1.6814 0.2454 0.8269 -1.0881 -1.1424 0.7971 -2.1742 0.8649 (:,:,15) = 0.0594 -2.0908 -0.1723 0.2557 -1.1110 -1.5074 0.1578 0.5286 -0.7027 1.9260 (:,:,16) = -0.3547 0.1481 -0.9297 -1.0064 -0.1334 1.1872 -0.0308 -0.0943 -0.3632 -1.4703 (:,:,17) = 0.0866 0.0515 0.1770 -1.0495 -1.0910 1.2994 -0.1530 -0.1821 -0.1600 1.6377 (:,:,18) = 0.8820 -0.5114 -1.6949 0.1523 0.4375 2.1341 -0.3578 -1.5224 -0.4132 0.3853 (:,:,19) = 0.5756 0.7845 0.5070 -0.0190 -1.6021 -1.7109 0.8970 -2.1029 0.8054 2.3897 (:,:,20) = -0.4548 -0.4863 -1.7089 -0.4617 1.2106 0.5118 0.1166 -0.3795 -0.8231 0.1280 (:,:,21) = -0.3409 -1.1771 -1.0191 0.1713 0.8405 0.3731 -1.0565 -1.0445 -0.0011 -0.9263 (:,:,22) = -0.0527 -1.1203 -1.0325 0.1015 -0.7649 1.2671 0.4507 -0.2430 0.6585 -0.1224 (:,:,23) = 0.2141 1.1805 -1.3787 0.3057 1.5172 0.2990 0.4007 -0.3995 -0.6900 1.3717 (:,:,24) = 1.1456 0.1479 -0.4306 -1.7615 0.8234 0.2880 0.3705 -0.0219 0.2025 -0.8276
permute() and shiftdim() might also be useful.
  2 commentaires
Connor Mondock
Connor Mondock le 4 Fév 2022
Thanks this is helpful, is there any way this could be done using a function? What would be the inputs and outputs?
Voss
Voss le 4 Fév 2022
All of these examples use built-in functions.

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Produits


Version

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by