sum of series of matrix

1 visualizzazione (ultimi 30 giorni)
rakesh kumar
rakesh kumar il 16 Ago 2022
Commentato: Image Analyst il 16 Ago 2022
I have a series of matrices like A1, A2,.........A99. I want to find sum of three matrices like(A1+A2+A3) then (A4+A5+A6)........(A97+A98+A99)
  2 Commenti
Chunru
Chunru il 16 Ago 2022
Can you put your matrices into a single 3D array like A(i,j,k)?
rakesh kumar
rakesh kumar il 16 Ago 2022
yes, but my problem is that have to find the sum in groups as I have mentioned. Thanks in advance for your help.

Accedi per commentare.

Risposta accettata

Chunru
Chunru il 16 Ago 2022
A = randn(5, 5, 99);
B = zeros(5, 5, 33);
for i=1:33
B(:, :, i) = sum(A(:, :, (i-1)*3+(1:3)), 3);
end
whos
Name Size Bytes Class Attributes A 5x5x99 19800 double B 5x5x33 6600 double cmdout 1x33 66 char i 1x1 8 double
B
B =
B(:,:,1) = 1.0801 -0.9310 1.6476 3.9098 -0.1822 2.7773 1.0514 2.8541 -1.9000 0.6120 1.0582 -0.4614 0.8884 0.4824 0.5554 -0.5364 0.4871 0.6735 -0.6918 0.7854 -2.3907 1.8485 0.3522 -3.2762 -2.1711 B(:,:,2) = 1.7186 0.5920 3.6962 2.1688 0.1163 -0.7519 -1.6879 3.1578 -3.1428 1.4388 0.0607 2.9797 0.7485 0.6620 0.0260 1.8920 -3.0542 1.0073 1.4882 -0.6512 -4.2737 -0.4719 0.9764 0.6908 1.9635 B(:,:,3) = -1.1917 -0.1001 0.9368 -1.9018 0.7090 1.5334 1.7555 2.1941 -0.6463 -0.1665 -0.2419 0.3022 0.3150 -3.5558 1.1313 -1.6839 0.6759 0.0532 2.8834 4.0220 -0.1851 1.4545 2.3745 -1.1610 1.2608 B(:,:,4) = 0.6287 1.9192 -1.0544 -1.2425 -2.8365 1.4835 0.5123 4.1524 -1.1864 0.1390 0.7249 -0.1715 0.3567 -1.1869 2.5121 -1.0874 1.2256 -0.4822 1.7408 -0.8053 -0.7387 1.7543 1.1213 -4.0384 -0.8762 B(:,:,5) = 0.9368 0.3619 1.2844 -1.2814 -1.2918 -1.4238 0.3363 1.5450 0.0269 -1.8170 0.6068 0.5592 2.0891 -0.9862 -0.2391 -0.4027 -0.5556 -0.5730 1.7127 1.1396 1.8389 -1.2629 3.5192 0.3103 2.6123 B(:,:,6) = -3.2745 1.2307 -1.4399 3.2468 -2.8418 -0.9268 -2.3572 1.5603 1.1992 0.8358 0.3286 -0.3112 0.3418 0.1299 0.3077 0.1179 1.6223 -1.6759 3.0819 0.5428 3.4974 0.7914 1.4008 -0.8006 2.3222 B(:,:,7) = 3.8006 1.8363 2.5171 -0.0303 0.9158 2.4714 0.0860 -1.7693 -0.4328 0.2005 2.2799 -0.9735 -1.7687 0.4138 2.9406 -1.0887 1.7944 1.0271 0.7926 1.2619 -1.3412 -1.9069 2.7119 -3.4371 1.1389 B(:,:,8) = -1.7138 2.3615 2.5694 -0.4497 -4.5408 -1.5113 0.7602 2.1105 -0.3170 -2.6361 -3.1610 -1.4643 0.6216 2.8660 0.0573 -1.6175 4.0008 -0.3381 -0.1984 -0.7947 -1.7819 0.4095 -1.4420 1.5145 -0.3211 B(:,:,9) = 2.3838 2.0878 -0.5382 3.7507 2.0960 1.9347 2.0669 -0.8329 0.3824 0.8640 2.4861 -2.6501 1.7428 -1.7890 -1.6104 -0.7959 0.3277 4.8707 -0.2208 1.2169 -1.9939 -0.6632 -0.0665 -1.7913 1.4307 B(:,:,10) = 1.7708 0.8174 -2.7081 0.5897 -0.6022 -0.1805 0.3482 -1.1240 0.8698 -0.2955 -0.9489 1.3042 -4.6263 1.7611 0.8033 -1.0393 -1.3906 -2.6551 -0.4666 0.3346 2.1117 0.6587 0.1391 -2.2200 1.9483 B(:,:,11) = -1.6108 3.9748 2.3733 -1.2794 -1.1346 1.5313 2.6586 1.2973 1.1206 -0.6783 0.2285 1.3468 -0.3297 -1.4879 0.9589 -3.2108 3.4015 1.2998 -3.2940 0.4316 -1.2495 -3.5360 2.1075 -0.1034 -1.3260 B(:,:,12) = 0.0661 -1.7048 1.9452 3.1399 -3.0431 -0.6224 -1.3920 2.7349 1.5759 1.9048 -2.6062 0.1277 3.5493 0.0089 -6.0951 0.2745 -0.9913 -3.8000 -2.1058 0.0014 -0.6025 -0.3238 0.7430 1.2486 0.3905 B(:,:,13) = 0.5090 -1.8384 4.9040 -0.0834 0.9401 -2.5016 -1.0498 -0.9617 0.1988 -1.6728 3.1996 -2.7104 2.0117 1.0260 -0.3569 3.2603 3.1382 3.0901 0.0855 -0.6663 0.7472 1.9691 0.4188 0.2657 -0.7560 B(:,:,14) = -2.0834 -0.1674 -0.0127 -1.3724 -0.7853 0.0141 -1.2462 -2.0874 -1.8179 -0.6612 1.4417 -0.5028 0.7359 0.5513 -0.0937 0.5833 -2.1986 -1.0589 0.2680 1.2708 1.8445 -1.7178 -0.3624 2.5992 2.4769 B(:,:,15) = -1.9915 0.2211 -0.8792 1.7162 -1.1824 1.8791 0.1338 0.1207 0.7979 0.0575 2.6634 -0.9772 -1.4023 1.9158 -2.0530 -3.5620 0.7934 2.8845 3.0420 -0.4115 -2.0293 3.0953 0.7776 0.0454 -0.6836 B(:,:,16) = 0.2460 -0.8852 2.6075 0.4653 0.5208 0.9171 -2.8741 2.2960 -1.6905 -0.0163 0.1987 0.0810 1.4670 -0.0219 3.1898 -1.1416 0.1643 2.6641 3.5801 0.7277 -2.0222 -0.4112 -1.6089 -2.2642 -2.0376 B(:,:,17) = 0.7975 2.9341 0.3443 0.0866 0.5167 0.1475 -3.4558 1.9223 -2.5965 1.4561 -1.4942 -1.1344 0.9004 -0.6161 1.0252 -0.5623 1.3244 -2.1575 -0.8474 -0.6853 -1.4023 -0.5532 -0.4516 -0.5334 3.4513 B(:,:,18) = -2.9338 0.0491 1.8345 2.9347 -1.9308 -0.3876 3.3523 4.0483 0.2978 -0.5219 2.1096 0.3462 0.7005 -1.5934 2.8639 0.4757 -1.7640 -0.7932 2.9646 -0.7123 -1.2909 -1.8976 1.0907 1.8097 -0.5561 B(:,:,19) = 0.5579 0.2422 -2.9485 0.7972 2.5755 1.0189 0.1914 -0.7493 0.6939 -2.0909 -2.5138 2.6576 -1.2495 -0.5541 2.7864 -1.6242 0.5929 -0.1956 0.4622 -3.3564 -0.2555 -1.3294 2.4360 0.0018 0.2349 B(:,:,20) = -2.7642 -0.5471 0.3265 -1.7913 -2.0071 1.3997 0.1897 0.0740 1.5834 0.1635 0.2456 -3.2479 0.7067 -2.1452 0.9359 -1.1186 0.6781 1.9374 0.0016 -1.4852 0.1581 1.1187 -1.2812 1.5271 2.3767 B(:,:,21) = 1.3027 -3.0669 -2.5140 2.5249 0.3256 1.0849 -2.2210 2.2105 1.0322 -2.7332 1.7464 -1.3768 -0.8949 0.7157 1.6362 0.1681 -1.2050 3.8122 0.3636 1.5360 0.5076 1.6824 -1.2537 -0.1030 0.7563 B(:,:,22) = -0.7558 -1.0014 1.8700 1.9205 -0.6140 0.2165 1.6217 -0.8111 1.0028 2.0232 -2.3559 2.7258 1.7126 -1.8611 0.4371 1.6219 0.7750 -2.5612 0.3213 -2.5177 0.1565 -0.5339 -0.5733 -0.2441 -2.5021 B(:,:,23) = 0.9844 0.8369 0.8553 0.2370 1.1270 2.9168 -0.6636 -0.2539 -0.4327 -0.6501 2.1469 1.4433 1.6019 0.9948 0.2525 1.5140 1.5396 0.9000 0.5947 1.4490 1.0458 0.0183 -1.2318 -0.2988 -2.0634 B(:,:,24) = -0.2771 -1.4910 -2.9626 -1.7318 2.2095 0.9512 -1.1338 0.6782 0.7795 -0.8880 -0.8533 -2.7780 -2.3788 -2.0778 0.2766 -0.9914 -0.2575 -0.3793 -0.1217 0.1563 -2.4972 1.8518 -2.1511 1.8243 -0.6004 B(:,:,25) = 0.2687 -0.3347 1.1227 -0.0886 -2.6626 0.9024 -0.8702 -0.0905 -0.3697 0.1555 -2.9463 -1.2182 -1.1932 0.9498 1.0114 0.2617 0.2796 -0.4914 3.5571 -1.1028 -1.6009 -1.5878 1.3678 -1.3583 -2.3621 B(:,:,26) = 1.2563 0.8366 0.8002 0.6838 0.2330 1.1104 -0.0262 -2.4385 0.4708 -1.7288 -0.1345 0.2320 -1.4339 -0.4139 0.7586 1.0655 2.9163 -0.8192 1.4195 0.5019 1.6090 0.7177 0.0177 1.0356 -2.0008 B(:,:,27) = 1.6343 1.0184 0.8376 -0.9728 0.3353 -2.7207 -0.5291 -0.2911 -1.0033 2.2731 -0.7506 0.7822 2.3866 1.6515 -2.9627 -0.4358 -0.4526 3.2547 -2.1035 -2.0407 0.8323 1.2352 -0.3457 1.4855 0.3752 B(:,:,28) = 1.8239 -0.1335 1.4915 -1.0550 -0.5938 3.7806 0.2710 0.9868 -2.0289 -1.1497 -1.0458 0.4945 0.3546 -0.0739 -1.6005 -0.2407 2.5159 -0.2250 0.5005 1.1066 0.2643 -0.0131 1.3026 1.7734 -0.5729 B(:,:,29) = -0.3810 0.8987 -2.2175 -0.4167 0.5621 -0.5270 0.4304 1.0761 0.1885 0.9786 1.7019 1.0872 -0.9485 0.5736 -2.1015 -1.8118 1.4298 -0.1435 0.7297 0.8214 0.2799 -2.1276 0.8208 -0.1314 -3.5065 B(:,:,30) = -0.1133 -2.7520 -3.2753 -1.0057 -0.8834 0.2685 0.9265 2.2004 -0.9980 0.8306 0.0608 0.3621 -1.8136 0.5018 -3.0189 -1.1764 2.5815 0.0425 -2.5444 -1.3692 -1.1503 -0.2703 -1.2848 -0.1888 -1.1203 B(:,:,31) = -0.6610 -0.8840 0.8206 -0.4026 -0.1174 0.9512 2.4037 1.1887 2.1854 0.1708 1.4476 -1.4069 -2.0353 -2.0397 4.2878 -2.4774 -0.8173 -2.1959 -2.1793 -0.7268 1.2948 0.3052 2.3863 -1.2332 -1.6261 B(:,:,32) = -0.4802 -0.6304 -2.3091 -0.7794 1.3444 2.2289 0.2194 1.5060 0.0024 1.3949 -1.2486 -0.4703 2.1090 0.6853 -1.4494 5.4418 -1.3608 2.3341 -0.5118 5.2558 1.0397 1.5947 -1.6032 -3.4416 2.3021 B(:,:,33) = -1.9845 0.9943 1.9642 -0.4459 0.8147 1.7308 -3.0916 -3.4756 3.4416 4.2824 -1.0330 3.4350 -3.7624 1.5342 -0.7833 -1.1288 0.0081 -2.4436 -2.2191 -1.0281 0.3592 -1.9227 -1.7233 0.3510 1.2419
  2 Commenti
rakesh kumar
rakesh kumar il 16 Ago 2022
thanks a lot
Image Analyst
Image Analyst il 16 Ago 2022
To make it more general and robust, you'd do
A = randn(5, 5, 99);
[rows, columns, slices] = size(A)
B = zeros(rows, columns, slices/3);
for k = 1 : slices/3 % or 1 : size(B, 3)
B(:, :, k) = sum(A(:, :, (k - 1) * 3 + (1 : 3)), 3);
end
whos
B
We don't recommend using i (the imaginary variable) as a loop counter, and it's more robust to preallocate the size of B based on the size of A. You might also check in advance if the number of slices is not a multiple of 3 and throw up a friendlier error if it's not.

Accedi per commentare.

Più risposte (1)

Image Analyst
Image Analyst il 16 Ago 2022
OK, so go ahead. I know you did not actually ask a question, but this is how you must proceed.
sum1 = (A1+A2+A3) ;
sum2 = (A4+A5+A6);
% Etc
sum33 = (A97+A98+A99);
Yes, you'll have 33 lines of code rather than a small, compact for loop, but that is the penalty you must pay for unwisely having 99 individual, separately named variables instead of having a higher dimensional array.
  3 Commenti
Image Analyst
Image Analyst il 16 Ago 2022
Modificato: Image Analyst il 16 Ago 2022
If you have a 3-D array, like you should rather than separately named variables, you can do this:
[rows, columns, slices] = size(A)
sums = zeros(rows, columns, slices/3, class(A));
slice = 1;
for k = 1 : 3 : slices
sums(:, :, slice) = sum(A(:, :, k : k+2), 3);
slice = slice + 1;
end
rakesh kumar
rakesh kumar il 16 Ago 2022
thanks

Accedi per commentare.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by