Summing a 30x30x30 matrix.

7 vues (au cours des 30 derniers jours)
Iskindir Weldemeskel
Iskindir Weldemeskel le 1 Oct 2023
Modifié(e) : Matt J le 3 Oct 2023
Let's say I have a 30x30x30 3D matrix and i wanted to sum up every 10x10x10 element of my matrix, and finally obtain a 3x3x3 matrix. Can anyone tell me how i can do that? thank you

Réponse acceptée

Walter Roberson
Walter Roberson le 1 Oct 2023
A = ones(30, 30, 30);
res= cellfun(@(M) sum(M, 'all'), mat2cell(A, 10*ones(1,3), 10*ones(1,3), 10*ones(1,3)));
res
res =
res(:,:,1) = 1000 1000 1000 1000 1000 1000 1000 1000 1000 res(:,:,2) = 1000 1000 1000 1000 1000 1000 1000 1000 1000 res(:,:,3) = 1000 1000 1000 1000 1000 1000 1000 1000 1000

Plus de réponses (3)

檮杌
檮杌 le 1 Oct 2023
A = ones(30, 30, 30);
for i = 1:3
for j = 1:3
for k = 1:3
ind1_1 = 1 + (i-1)*10;
ind1_2 = i * 10;
ind2_1 = 1 + (j-1)*10;
ind2_2 = j * 10;
ind3_1 = 1 + (k-1)*10;
ind3_2 = k * 10;
temp = A(ind1_1:ind1_2, ind2_1:ind2_2, ind3_1:ind3_2);
res(i,j,k) = sum(temp(:));
clear temp
end
end
end
res
res =
res(:,:,1) = 1000 1000 1000 1000 1000 1000 1000 1000 1000 res(:,:,2) = 1000 1000 1000 1000 1000 1000 1000 1000 1000 res(:,:,3) = 1000 1000 1000 1000 1000 1000 1000 1000 1000

Matt J
Matt J le 2 Oct 2023
Modifié(e) : Matt J le 2 Oct 2023
Download sepblockfun from,
A = ones(30, 30, 30);
B=sepblockfun(A,[10,10,10],'sum')
B =
B(:,:,1) = 1000 1000 1000 1000 1000 1000 1000 1000 1000 B(:,:,2) = 1000 1000 1000 1000 1000 1000 1000 1000 1000 B(:,:,3) = 1000 1000 1000 1000 1000 1000 1000 1000 1000
  1 commentaire
Matt J
Matt J le 2 Oct 2023
Modifié(e) : Matt J le 2 Oct 2023
Notice also how fast it is on larger data sets compared to the other proposals:
A = ones(300, 300, 300);
tic
B=sepblockfun(A,[10,10,10],'sum');
toc
Elapsed time is 0.020443 seconds.
tic;
D=10*ones(1,30);
res= cellfun(@(M) sum(M, 'all'), mat2cell(A, D,D,D) );
toc
Elapsed time is 0.370935 seconds.
tic;
for i = 1:30
for j = 1:30
for k = 1:30
ind1_1 = 1 + (i-1)*10;
ind1_2 = i * 10;
ind2_1 = 1 + (j-1)*10;
ind2_2 = j * 10;
ind3_1 = 1 + (k-1)*10;
ind3_2 = k * 10;
temp = A(ind1_1:ind1_2, ind2_1:ind2_2, ind3_1:ind3_2);
res(i,j,k) = sum(temp(:));
clear temp
end
end
end
toc
Elapsed time is 0.281285 seconds.

Connectez-vous pour commenter.


Stephen23
Stephen23 le 2 Oct 2023
a = reshape(1:30*30*30,30,30,30)
a =
a(:,:,1) = 1 31 61 91 121 151 181 211 241 271 301 331 361 391 421 451 481 511 541 571 601 631 661 691 721 751 781 811 841 871 2 32 62 92 122 152 182 212 242 272 302 332 362 392 422 452 482 512 542 572 602 632 662 692 722 752 782 812 842 872 3 33 63 93 123 153 183 213 243 273 303 333 363 393 423 453 483 513 543 573 603 633 663 693 723 753 783 813 843 873 4 34 64 94 124 154 184 214 244 274 304 334 364 394 424 454 484 514 544 574 604 634 664 694 724 754 784 814 844 874 5 35 65 95 125 155 185 215 245 275 305 335 365 395 425 455 485 515 545 575 605 635 665 695 725 755 785 815 845 875 6 36 66 96 126 156 186 216 246 276 306 336 366 396 426 456 486 516 546 576 606 636 666 696 726 756 786 816 846 876 7 37 67 97 127 157 187 217 247 277 307 337 367 397 427 457 487 517 547 577 607 637 667 697 727 757 787 817 847 877 8 38 68 98 128 158 188 218 248 278 308 338 368 398 428 458 488 518 548 578 608 638 668 698 728 758 788 818 848 878 9 39 69 99 129 159 189 219 249 279 309 339 369 399 429 459 489 519 549 579 609 639 669 699 729 759 789 819 849 879 10 40 70 100 130 160 190 220 250 280 310 340 370 400 430 460 490 520 550 580 610 640 670 700 730 760 790 820 850 880 11 41 71 101 131 161 191 221 251 281 311 341 371 401 431 461 491 521 551 581 611 641 671 701 731 761 791 821 851 881 12 42 72 102 132 162 192 222 252 282 312 342 372 402 432 462 492 522 552 582 612 642 672 702 732 762 792 822 852 882 13 43 73 103 133 163 193 223 253 283 313 343 373 403 433 463 493 523 553 583 613 643 673 703 733 763 793 823 853 883 14 44 74 104 134 164 194 224 254 284 314 344 374 404 434 464 494 524 554 584 614 644 674 704 734 764 794 824 854 884 15 45 75 105 135 165 195 225 255 285 315 345 375 405 435 465 495 525 555 585 615 645 675 705 735 765 795 825 855 885 16 46 76 106 136 166 196 226 256 286 316 346 376 406 436 466 496 526 556 586 616 646 676 706 736 766 796 826 856 886 17 47 77 107 137 167 197 227 257 287 317 347 377 407 437 467 497 527 557 587 617 647 677 707 737 767 797 827 857 887 18 48 78 108 138 168 198 228 258 288 318 348 378 408 438 468 498 528 558 588 618 648 678 708 738 768 798 828 858 888 19 49 79 109 139 169 199 229 259 289 319 349 379 409 439 469 499 529 559 589 619 649 679 709 739 769 799 829 859 889 20 50 80 110 140 170 200 230 260 290 320 350 380 410 440 470 500 530 560 590 620 650 680 710 740 770 800 830 860 890 21 51 81 111 141 171 201 231 261 291 321 351 381 411 441 471 501 531 561 591 621 651 681 711 741 771 801 831 861 891 22 52 82 112 142 172 202 232 262 292 322 352 382 412 442 472 502 532 562 592 622 652 682 712 742 772 802 832 862 892 23 53 83 113 143 173 203 233 263 293 323 353 383 413 443 473 503 533 563 593 623 653 683 713 743 773 803 833 863 893 24 54 84 114 144 174 204 234 264 294 324 354 384 414 444 474 504 534 564 594 624 654 684 714 744 774 804 834 864 894 25 55 85 115 145 175 205 235 265 295 325 355 385 415 445 475 505 535 565 595 625 655 685 715 745 775 805 835 865 895 26 56 86 116 146 176 206 236 266 296 326 356 386 416 446 476 506 536 566 596 626 656 686 716 746 776 806 836 866 896 27 57 87 117 147 177 207 237 267 297 327 357 387 417 447 477 507 537 567 597 627 657 687 717 747 777 807 837 867 897 28 58 88 118 148 178 208 238 268 298 328 358 388 418 448 478 508 538 568 598 628 658 688 718 748 778 808 838 868 898 29 59 89 119 149 179 209 239 269 299 329 359 389 419 449 479 509 539 569 599 629 659 689 719 749 779 809 839 869 899 30 60 90 120 150 180 210 240 270 300 330 360 390 420 450 480 510 540 570 600 630 660 690 720 750 780 810 840 870 900 a(:,:,2) = Columns 1 through 16 901 931 961 991 1021 1051 1081 1111 1141 1171 1201 1231 1261 1291 1321 1351 902 932 962 992 1022 1052 1082 1112 1142 1172 1202 1232 1262 1292 1322 1352 903 933 963 993 1023 1053 1083 1113 1143 1173 1203 1233 1263 1293 1323 1353 904 934 964 994 1024 1054 1084 1114 1144 1174 1204 1234 1264 1294 1324 1354 905 935 965 995 1025 1055 1085 1115 1145 1175 1205 1235 1265 1295 1325 1355 906 936 966 996 1026 1056 1086 1116 1146 1176 1206 1236 1266 1296 1326 1356 907 937 967 997 1027 1057 1087 1117 1147 1177 1207 1237 1267 1297 1327 1357 908 938 968 998 1028 1058 1088 1118 1148 1178 1208 1238 1268 1298 1328 1358 909 939 969 999 1029 1059 1089 1119 1149 1179 1209 1239 1269 1299 1329 1359 910 940 970 1000 1030 1060 1090 1120 1150 1180 1210 1240 1270 1300 1330 1360 911 941 971 1001 1031 1061 1091 1121 1151 1181 1211 1241 1271 1301 1331 1361 912 942 972 1002 1032 1062 1092 1122 1152 1182 1212 1242 1272 1302 1332 1362 913 943 973 1003 1033 1063 1093 1123 1153 1183 1213 1243 1273 1303 1333 1363 914 944 974 1004 1034 1064 1094 1124 1154 1184 1214 1244 1274 1304 1334 1364 915 945 975 1005 1035 1065 1095 1125 1155 1185 1215 1245 1275 1305 1335 1365 916 946 976 1006 1036 1066 1096 1126 1156 1186 1216 1246 1276 1306 1336 1366 917 947 977 1007 1037 1067 1097 1127 1157 1187 1217 1247 1277 1307 1337 1367 918 948 978 1008 1038 1068 1098 1128 1158 1188 1218 1248 1278 1308 1338 1368 919 949 979 1009 1039 1069 1099 1129 1159 1189 1219 1249 1279 1309 1339 1369 920 950 980 1010 1040 1070 1100 1130 1160 1190 1220 1250 1280 1310 1340 1370 921 951 981 1011 1041 1071 1101 1131 1161 1191 1221 1251 1281 1311 1341 1371 922 952 982 1012 1042 1072 1102 1132 1162 1192 1222 1252 1282 1312 1342 1372 923 953 983 1013 1043 1073 1103 1133 1163 1193 1223 1253 1283 1313 1343 1373 924 954 984 1014 1044 1074 1104 1134 1164 1194 1224 1254 1284 1314 1344 1374 925 955 985 1015 1045 1075 1105 1135 1165 1195 1225 1255 1285 1315 1345 1375 926 956 986 1016 1046 1076 1106 1136 1166 1196 1226 1256 1286 1316 1346 1376 927 957 987 1017 1047 1077 1107 1137 1167 1197 1227 1257 1287 1317 1347 1377 928 958 988 1018 1048 1078 1108 1138 1168 1198 1228 1258 1288 1318 1348 1378 929 959 989 1019 1049 1079 1109 1139 1169 1199 1229 1259 1289 1319 1349 1379 930 960 990 1020 1050 1080 1110 1140 1170 1200 1230 1260 1290 1320 1350 1380 Columns 17 through 30 1381 1411 1441 1471 1501 1531 1561 1591 1621 1651 1681 1711 1741 1771 1382 1412 1442 1472 1502 1532 1562 1592 1622 1652 1682 1712 1742 1772 1383 1413 1443 1473 1503 1533 1563 1593 1623 1653 1683 1713 1743 1773 1384 1414 1444 1474 1504 1534 1564 1594 1624 1654 1684 1714 1744 1774 1385 1415 1445 1475 1505 1535 1565 1595 1625 1655 1685 1715 1745 1775 1386 1416 1446 1476 1506 1536 1566 1596 1626 1656 1686 1716 1746 1776 1387 1417 1447 1477 1507 1537 1567 1597 1627 1657 1687 1717 1747 1777 1388 1418 1448 1478 1508 1538 1568 1598 1628 1658 1688 1718 1748 1778 1389 1419 1449 1479 1509 1539 1569 1599 1629 1659 1689 1719 1749 1779 1390 1420 1450 1480 1510 1540 1570 1600 1630 1660 1690 1720 1750 1780 1391 1421 1451 1481 1511 1541 1571 1601 1631 1661 1691 1721 1751 1781 1392 1422 1452 1482 1512 1542 1572 1602 1632 1662 1692 1722 1752 1782 1393 1423 1453 1483 1513 1543 1573 1603 1633 1663 1693 1723 1753 1783 1394 1424 1454 1484 1514 1544 1574 1604 1634 1664 1694 1724 1754 1784 1395 1425 1455 1485 1515 1545 1575 1605 1635 1665 1695 1725 1755 1785 1396 1426 1456 1486 1516 1546 1576 1606 1636 1666 1696 1726 1756 1786 1397 1427 1457 1487 1517 1547 1577 1607 1637 1667 1697 1727 1757 1787 1398 1428 1458 1488 1518 1548 1578 1608 1638 1668 1698 1728 1758 1788 1399 1429 1459 1489 1519 1549 1579 1609 1639 1669 1699 1729 1759 1789 1400 1430 1460 1490 1520 1550 1580 1610 1640 1670 1700 1730 1760 1790 1401 1431 1461 1491 1521 1551 1581 1611 1641 1671 1701 1731 1761 1791 1402 1432 1462 1492 1522 1552 1582 1612 1642 1672 1702 1732 1762 1792 1403 1433 1463 1493 1523 1553 1583 1613 1643 1673 1703 1733 1763 1793 1404 1434 1464 1494 1524 1554 1584 1614 1644 1674 1704 1734 1764 1794 1405 1435 1465 1495 1525 1555 1585 1615 1645 1675 1705 1735 1765 1795 1406 1436 1466 1496 1526 1556 1586 1616 1646 1676 1706 1736 1766 1796 1407 1437 1467 1497 1527 1557 1587 1617 1647 1677 1707 1737 1767 1797 1408 1438 1468 1498 1528 1558 1588 1618 1648 1678 1708 1738 1768 1798 1409 1439 1469 1499 1529 1559 1589 1619 1649 1679 1709 1739 1769 1799 1410 1440 1470 1500 1530 1560 1590 1620 1650 1680 1710 1740 1770 1800 a(:,:,3) = Columns 1 through 16 1801 1831 1861 1891 1921 1951 1981 2011 2041 2071 2101 2131 2161 2191 2221 2251 1802 1832 1862 1892 1922 1952 1982 2012 2042 2072 2102 2132 2162 2192 2222 2252 1803 1833 1863 1893 1923 1953 1983 2013 2043 2073 2103 2133 2163 2193 2223 2253 1804 1834 1864 1894 1924 1954 1984 2014 2044 2074 2104 2134 2164 2194 2224 2254 1805 1835 1865 1895 1925 1955 1985 2015 2045 2075 2105 2135 2165 2195 2225 2255 1806 1836 1866 1896 1926 1956 1986 2016 2046 2076 2106 2136 2166 2196 2226 2256 1807 1837 1867 1897 1927 1957 1987 2017 2047 2077 2107 2137 2167 2197 2227 2257 1808 1838 1868 1898 1928 1958 1988 2018 2048 2078 2108 2138 2168 2198 2228 2258 1809 1839 1869 1899 1929 1959 1989 2019 2049 2079 2109 2139 2169 2199 2229 2259 1810 1840 1870 1900 1930 1960 1990 2020 2050 2080 2110 2140 2170 2200 2230 2260 1811 1841 1871 1901 1931 1961 1991 2021 2051 2081 2111 2141 2171 2201 2231 2261 1812 1842 1872 1902 1932 1962 1992 2022 2052 2082 2112 2142 2172 2202 2232 2262 1813 1843 1873 1903 1933 1963 1993 2023 2053 2083 2113 2143 2173 2203 2233 2263 1814 1844 1874 1904 1934 1964 1994 2024 2054 2084 2114 2144 2174 2204 2234 2264 1815 1845 1875 1905 1935 1965 1995 2025 2055 2085 2115 2145 2175 2205 2235 2265 1816 1846 1876 1906 1936 1966 1996 2026 2056 2086 2116 2146 2176 2206 2236 2266 1817 1847 1877 1907 1937 1967 1997 2027 2057 2087 2117 2147 2177 2207 2237 2267 1818 1848 1878 1908 1938 1968 1998 2028 2058 2088 2118 2148 2178 2208 2238 2268 1819 1849 1879 1909 1939 1969 1999 2029 2059 2089 2119 2149 2179 2209 2239 2269 1820 1850 1880 1910 1940 1970 2000 2030 2060 2090 2120 2150 2180 2210 2240 2270 1821 1851 1881 1911 1941 1971 2001 2031 2061 2091 2121 2151 2181 2211 2241 2271 1822 1852 1882 1912 1942 1972 2002 2032 2062 2092 2122 2152 2182 2212 2242 2272 1823 1853 1883 1913 1943 1973 2003 2033 2063 2093 2123 2153 2183 2213 2243 2273 1824 1854 1884 1914 1944 1974 2004 2034 2064 2094 2124 2154 2184 2214 2244 2274 1825 1855 1885 1915 1945 1975 2005 2035 2065 2095 2125 2155 2185 2215 2245 2275 1826 1856 1886 1916 1946 1976 2006 2036 2066 2096 2126 2156 2186 2216 2246 2276 1827 1857 1887 1917 1947 1977 2007 2037 2067 2097 2127 2157 2187 2217 2247 2277 1828 1858 1888 1918 1948 1978 2008 2038 2068 2098 2128 2158 2188 2218 2248 2278 1829 1859 1889 1919 1949 1979 2009 2039 2069 2099 2129 2159 2189 2219 2249 2279 1830 1860 1890 1920 1950 1980 2010 2040 2070 2100 2130 2160 2190 2220 2250 2280 Columns 17 through 30 2281 2311 2341 2371 2401 2431 2461 2491 2521 2551 2581 2611 2641 2671 2282 2312 2342 2372 2402 2432 2462 2492 2522 2552 2582 2612 2642 2672 2283 2313 2343 2373 2403 2433 2463 2493 2523 2553 2583 2613 2643 2673 2284 2314 2344 2374 2404 2434 2464 2494 2524 2554 2584 2614 2644 2674 2285 2315 2345 2375 2405 2435 2465 2495 2525 2555 2585 2615 2645 2675 2286 2316 2346 2376 2406 2436 2466 2496 2526 2556 2586 2616 2646 2676 2287 2317 2347 2377 2407 2437 2467 2497 2527 2557 2587 2617 2647 2677 2288 2318 2348 2378 2408 2438 2468 2498 2528 2558 2588 2618 2648 2678 2289 2319 2349 2379 2409 2439 2469 2499 2529 2559 2589 2619 2649 2679 2290 2320 2350 2380 2410 2440 2470 2500 2530 2560 2590 2620 2650 2680 2291 2321 2351 2381 2411 2441 2471 2501 2531 2561 2591 2621 2651 2681 2292 2322 2352 2382 2412 2442 2472 2502 2532 2562 2592 2622 2652 2682 2293 2323 2353 2383 2413 2443 2473 2503 2533 2563 2593 2623 2653 2683 2294 2324 2354 2384 2414 2444 2474 2504 2534 2564 2594 2624 2654 2684 2295 2325 2355 2385 2415 2445 2475 2505 2535 2565 2595 2625 2655 2685 2296 2326 2356 2386 2416 2446 2476 2506 2536 2566 2596 2626 2656 2686 2297 2327 2357 2387 2417 2447 2477 2507 2537 2567 2597 2627 2657 2687 2298 2328 2358 2388 2418 2448 2478 2508 2538 2568 2598 2628 2658 2688 2299 2329 2359 2389 2419 2449 2479 2509 2539 2569 2599 2629 2659 2689 2300 2330 2360 2390 2420 2450 2480 2510 2540 2570 2600 2630 2660 2690 2301 2331 2361 2391 2421 2451 2481 2511 2541 2571 2601 2631 2661 2691 2302 2332 2362 2392 2422 2452 2482 2512 2542 2572 2602 2632 2662 2692 2303 2333 2363 2393 2423 2453 2483 2513 2543 2573 2603 2633 2663 2693 2304 2334 2364 2394 2424 2454 2484 2514 2544 2574 2604 2634 2664 2694 2305 2335 2365 2395 2425 2455 2485 2515 2545 2575 2605 2635 2665 2695 2306 2336 2366 2396 2426 2456 2486 2516 2546 2576 2606 2636 2666 2696 2307 2337 2367 2397 2427 2457 2487 2517 2547 2577 2607 2637 2667 2697 2308 2338 2368 2398 2428 2458 2488 2518 2548 2578 2608 2638 2668 2698 2309 2339 2369 2399 2429 2459 2489 2519 2549 2579 2609 2639 2669 2699 2310 2340 2370 2400 2430 2460 2490 2520 2550 2580 2610 2640 2670 2700 a(:,:,4) = Columns 1 through 16 2701 2731 2761 2791 2821 2851 2881 2911 2941 2971 3001 3031 3061 3091 3121 3151 2702 2732 2762 2792 2822 2852 2882 2912 2942 2972 3002 3032 3062 3092 3122 3152 2703 2733 2763 2793 2823 2853 2883 2913 2943 2973 3003 3033 3063 3093 3123 3153 2704 2734 2764 2794 2824 2854 2884 2914 2944 2974 3004 3034 3064 3094 3124 3154 2705 2735 2765 2795 2825 2855 2885 2915 2945 2975 3005 3035 3065 3095 3125 3155 2706 2736 2766 2796 2826 2856 2886 2916 2946 2976 3006 3036 3066 3096 3126 3156 2707 2737 2767 2797 2827 2857 2887 2917 2947 2977 3007 3037 3067 3097 3127 3157 2708 2738 2768 2798 2828 2858 2888 2918 2948 2978 3008 3038 3068 3098 3128 3158 2709 2739 2769 2799 2829 2859 2889 2919 2949 2979 3009 3039 3069 3099 3129 3159 2710 2740 2770 2800 2830 2860 2890 2920 2950 2980 3010 3040 3070 3100 3130 3160 2711 2741 2771 2801 2831 2861 2891 2921 2951 2981 3011 3041 3071 3101 3131 3161 2712 2742 2772 2802 2832 2862 2892 2922 2952 2982 3012 3042 3072 3102 3132 3162 2713 2743 2773 2803 2833 2863 2893 2923 2953 2983 3013 3043 3073 3103 3133 3163 2714 2744 2774 2804 2834 2864 2894 2924 2954 2984 3014 3044 3074 3104 3134 3164 2715 2745 2775 2805 2835 2865 2895 2925 2955 2985 3015 3045 3075 3105 3135 3165 2716 2746 2776 2806 2836 2866 2896 2926 2956 2986 3016 3046 3076 3106 3136 3166 2717 2747 2777 2807 2837 2867 2897 2927 2957 2987 3017 3047 3077 3107 3137 3167 2718 2748 2778 2808 2838 2868 2898 2928 2958 2988 3018 3048 3078 3108 3138 3168 2719 2749 2779 2809 2839 2869 2899 2929 2959 2989 3019 3049 3079 3109 3139 3169 2720 2750 2780 2810 2840 2870 2900 2930 2960 2990 3020 3050 3080 3110 3140 3170 2721 2751 2781 2811 2841 2871 2901 2931 2961 2991 3021 3051 3081 3111 3141 3171 2722 2752 2782 2812 2842 2872 2902 2932 2962 2992 3022 3052 3082 3112 3142 3172 2723 2753 2783 2813 2843 2873 2903 2933 2963 2993 3023 3053 3083 3113 3143 3173 2724 2754 2784 2814 2844 2874 2904 2934 2964 2994 3024 3054 3084 3114 3144 3174 2725 2755 2785 2815 2845 2875 2905 2935 2965 2995 3025 3055 3085 3115 3145 3175 2726 2756 2786 2816 2846 2876 2906 2936 2966 2996 3026 3056 3086 3116 3146 3176 2727 2757 2787 2817 2847 2877 2907 2937 2967 2997 3027 3057 3087 3117 3147 3177 2728 2758 2788 2818 2848 2878 2908 2938 2968 2998 3028 3058 3088 3118 3148 3178 2729 2759 2789 2819 2849 2879 2909 2939 2969 2999 3029 3059 3089 3119 3149 3179 2730 2760 2790 2820 2850 2880 2910 2940 2970 3000 3030 3060 3090 3120 3150 3180 Columns 17 through 30 3181 3211 3241 3271 3301 3331 3361 3391 3421 3451 3481 3511 3541 3571 3182 3212 3242 3272 3302 3332 3362 3392 3422 3452 3482 3512 3542 3572 3183 3213 3243 3273 3303 3333 3363 3393 3423 3453 3483 3513 3543 3573 3184 3214 3244 3274 3304 3334 3364 3394 3424 3454 3484 3514 3544 3574 3185 3215 3245 3275 3305 3335 3365 3395 3425 3455 3485 3515 3545 3575 3186 3216 3246 3276 3306 3336 3366 3396 3426 3456 3486 3516 3546 3576 3187 3217 3247 3277 3307 3337 3367 3397 3427 3457 3487 3517 3547 3577 3188 3218 3248 3278 3308 3338 3368 3398 3428 3458 3488 3518 3548 3578 3189 3219 3249 3279 3309 3339 3369 3399 3429 3459 3489 3519 3549 3579 3190 3220 3250 3280 3310 3340 3370 3400 3430 3460 3490 3520 3550 3580 3191 3221 3251 3281 3311 3341 3371 3401 3431 3461 3491 3521 3551 3581 3192 3222 3252 3282 3312 3342 3372 3402 3432 3462 3492 3522 3552 3582 3193 3223 3253 3283 3313 3343 3373 3403 3433 3463 3493 3523 3553 3583 3194 3224 3254 3284 3314 3344 3374 3404 3434 3464 3494 3524 3554 3584 3195 3225 3255 3285 3315 3345 3375 3405 3435 3465 3495 3525 3555 3585 3196 3226 3256 3286 3316 3346 3376 3406 3436 3466 3496 3526 3556 3586 3197 3227 3257 3287 3317 3347 3377 3407 3437 3467 3497 3527 3557 3587 3198 3228 3258 3288 3318 3348 3378 3408 3438 3468 3498 3528 3558 3588 3199 3229 3259 3289 3319 3349 3379 3409 3439 3469 3499 3529 3559 3589 3200 3230 3260 3290 3320 3350 3380 3410 3440 3470 3500 3530 3560 3590 3201 3231 3261 3291 3321 3351 3381 3411 3441 3471 3501 3531 3561 3591 3202 3232 3262 3292 3322 3352 3382 3412 3442 3472 3502 3532 3562 3592 3203 3233 3263 3293 3323 3353 3383 3413 3443 3473 3503 3533 3563 3593 3204 3234 3264 3294 3324 3354 3384 3414 3444 3474 3504 3534 3564 3594 3205 3235 3265 3295 3325 3355 3385 3415 3445 3475 3505 3535 3565 3595 3206 3236 3266 3296 3326 3356 3386 3416 3446 3476 3506 3536 3566 3596 3207 3237 3267 3297 3327 3357 3387 3417 3447 3477 3507 3537 3567 3597 3208 3238 3268 3298 3328 3358 3388 3418 3448 3478 3508 3538 3568 3598 3209 3239 3269 3299 3329 3359 3389 3419 3449 3479 3509 3539 3569 3599 3210 3240 3270 3300 3330 3360 3390 3420 3450 3480 3510 3540 3570 3600 a(:,:,5) = Columns 1 through 16 3601 3631 3661 3691 3721 3751 3781 3811 3841 3871 3901 3931 3961 3991 4021 4051 3602 3632 3662 3692 3722 3752 3782 3812 3842 3872 3902 3932 3962 3992 4022 4052 3603 3633 3663 3693 3723 3753 3783 3813 3843 3873 3903 3933 3963 3993 4023 4053 3604 3634 3664 3694 3724 3754 3784 3814 3844 3874 3904 3934 3964 3994 4024 4054 3605 3635 3665 3695 3725 3755 3785 3815 3845 3875 3905 3935 3965 3995 4025 4055 3606 3636 3666 3696 3726 3756 3786 3816 3846 3876 3906 3936 3966 3996 4026 4056 3607 3637 3667 3697 3727 3757 3787 3817 3847 3877 3907 3937 3967 3997 4027 4057 3608 3638 3668 3698 3728 3758 3788 3818 3848 3878 3908 3938 3968 3998 4028 4058 3609 3639 3669 3699 3729 3759 3789 3819 3849 3879 3909 3939 3969 3999 4029 4059 3610 3640 3670 3700 3730 3760 3790 3820 3850 3880 3910 3940 3970 4000 4030 4060 3611 3641 3671 3701 3731 3761 3791 3821 3851 3881 3911 3941 3971 4001 4031 4061 3612 3642 3672 3702 3732 3762 3792 3822 3852 3882 3912 3942 3972 4002 4032 4062 3613 3643 3673 3703 3733 3763 3793 3823 3853 3883 3913 3943 3973 4003 4033 4063 3614 3644 3674 3704 3734 3764 3794 3824 3854 3884 3914 3944 3974 4004 4034 4064 3615 3645 3675 3705 3735 3765 3795 3825 3855 3885 3915 3945 3975 4005 4035 4065 3616 3646 3676 3706 3736 3766 3796 3826 3856 3886 3916 3946 3976 4006 4036 4066 3617 3647 3677 3707 3737 3767 3797 3827 3857 3887 3917 3947 3977 4007 4037 4067 3618 3648 3678 3708 3738 3768 3798 3828 3858 3888 3918 3948 3978 4008 4038 4068 3619 3649 3679 3709 3739 3769 3799 3829 3859 3889 3919 3949 3979 4009 4039 4069 3620 3650 3680 3710 3740 3770 3800 3830 3860 3890 3920 3950 3980 4010 4040 4070 3621 3651 3681 3711 3741 3771 3801 3831 3861 3891 3921 3951 3981 4011 4041 4071 3622 3652 3682 3712 3742 3772 3802 3832 3862 3892 3922 3952 3982 4012 4042 4072 3623 3653 3683 3713 3743 3773 3803 3833 3863 3893 3923 3953 3983 4013 4043 4073 3624 3654 3684 3714 3744 3774 3804 3834 3864 3894 3924 3954 3984 4014 4044 4074 3625 3655 3685 3715 3745 3775 3805 3835 3865 3895 3925 3955 3985 4015 4045 4075 3626 3656 3686 3716 3746 3776 3806 3836 3866 3896 3926 3956 3986 4016 4046 4076 3627 3657 3687 3717 3747 3777 3807 3837 3867 3897 3927 3957 3987 4017 4047 4077 3628 3658 3688 3718 3748 3778 3808 3838 3868 3898 3928 3958 3988 4018 4048 4078 3629 3659 3689 3719 3749 3779 3809 3839 3869 3899 3929 3959 3989 4019 4049 4079 3630 3660 3690 3720 3750 3780 3810 3840 3870 3900 3930 3960 3990 4020 4050 4080 Columns 17 through 30 4081 4111 4141 4171 4201 4231 4261 4291 4321 4351 4381 4411 4441 4471 4082 4112 4142 4172 4202 4232 4262 4292 4322 4352 4382 4412 4442 4472 4083 4113 4143 4173 4203 4233 4263 4293 4323 4353 4383 4413 4443 4473 4084 4114 4144 4174 4204 4234 4264 4294 4324 4354 4384 4414 4444 4474 4085 4115 4145 4175 4205 4235 4265 4295 4325 4355 4385 4415 4445 4475 4086 4116 4146 4176 4206 4236 4266 4296 4326 4356 4386 4416 4446 4476 4087 4117 4147 4177 4207 4237 4267 4297 4327 4357 4387 4417 4447 4477 4088 4118 4148 4178 4208 4238 4268 4298 4328 4358 4388 4418 4448 4478 4089 4119 4149 4179 4209 4239 4269 4299 4329 4359 4389 4419 4449 4479 4090 4120 4150 4180 4210 4240 4270 4300 4330 4360 4390 4420 4450 4480 4091 4121 4151 4181 4211 4241 4271 4301 4331 4361 4391 4421 4451 4481 4092 4122 4152 4182 4212 4242 4272 4302 4332 4362 4392 4422 4452 4482 4093 4123 4153 4183 4213 4243 4273 4303 4333 4363 4393 4423 4453 4483 4094 4124 4154 4184 4214 4244 4274 4304 4334 4364 4394 4424 4454 4484 4095 4125 4155 4185 4215 4245 4275 4305 4335 4365 4395 4425 4455 4485 4096 4126 4156 4186 4216 4246 4276 4306 4336 4366 4396 4426 4456 4486 4097 4127 4157 4187 4217 4247 4277 4307 4337 4367 4397 4427 4457 4487 4098 4128 4158 4188 4218 4248 4278 4308 4338 4368 4398 4428 4458 4488 4099 4129 4159 4189 4219 4249 4279 4309 4339 4369 4399 4429 4459 4489 4100 4130 4160 4190 4220 4250 4280 4310 4340 4370 4400 4430 4460 4490 4101 4131 4161 4191 4221 4251 4281 4311 4341 4371 4401 4431 4461 4491 4102 4132 4162 4192 4222 4252 4282 4312 4342 4372 4402 4432 4462 4492 4103 4133 4163 4193 4223 4253 4283 4313 4343 4373 4403 4433 4463 4493 4104 4134 4164 4194 4224 4254 4284 4314 4344 4374 4404 4434 4464 4494 4105 4135 4165 4195 4225 4255 4285 4315 4345 4375 4405 4435 4465 4495 4106 4136 4166 4196 4226 4256 4286 4316 4346 4376 4406 4436 4466 4496 4107 4137 4167 4197 4227 4257 4287 4317 4347 4377 4407 4437 4467 4497 4108 4138 4168 4198 4228 4258 4288 4318 4348 4378 4408 4438 4468 4498 4109 4139 4169 4199 4229 4259 4289 4319 4349 4379 4409 4439 4469 4499 4110 4140 4170 4200 4230 4260 4290 4320 4350 4380 4410 4440 4470 4500 a(:,:,6) = Columns 1 through 16 4501 4531 4561 4591 4621 4651 4681 4711 4741 4771 4801 4831 4861 4891 4921 4951 4502 4532 4562 4592 4622 4652 4682 4712 4742 4772 4802 4832 4862 4892 4922 4952 4503 4533 4563 4593 4623 4653 4683 4713 4743 4773 4803 4833 4863 4893 4923 4953 4504 4534 4564 4594 4624 4654 4684 4714 4744 4774 4804 4834 4864 4894 4924 4954 4505 4535 4565 4595 4625 4655 4685 4715 4745 4775 4805 4835 4865 4895 4925 4955 4506 4536 4566 4596 4626 4656 4686 4716 4746 4776 4806 4836 4866 4896 4926 4956 4507 4537 4567 4597 4627 4657 4687 4717 4747 4777 4807 4837 4867 4897 4927 4957 4508 4538 4568 4598 4628 4658 4688 4718 4748 4778 4808 4838 4868 4898 4928 4958 4509 4539 4569 4599 4629 4659 4689 4719 4749 4779 4809 4839 4869 4899 4929 4959 4510 4540 4570 4600 4630 4660 4690 4720 4750 4780 4810 4840 4870 4900 4930 4960 4511 4541 4571 4601 4631 4661 4691 4721 4751 4781 4811 4841 4871 4901 4931 4961 4512 4542 4572 4602 4632 4662 4692 4722 4752 4782 4812 4842 4872 4902 4932 4962 4513 4543 4573 4603 4633 4663 4693 4723 4753 4783 4813 4843 4873 4903 4933 4963 4514 4544 4574 4604 4634 4664 4694 4724 4754 4784 4814 4844 4874 4904 4934 4964 4515 4545 4575 4605 4635 4665 4695 4725 4755 4785 4815 4845 4875 4905 4935 4965 4516 4546 4576 4606 4636 4666 4696 4726 4756 4786 4816 4846 4876 4906 4936 4966 4517 4547 4577 4607 4637 4667 4697 4727 4757 4787 4817 4847 4877 4907 4937 4967 4518 4548 4578 4608 4638 4668 4698 4728 4758 4788 4818 4848 4878 4908 4938 4968 4519 4549 4579 4609 4639 4669 4699 4729 4759 4789 4819 4849 4879 4909 4939 4969 4520 4550 4580 4610 4640 4670 4700 4730 4760 4790 4820 4850 4880 4910 4940 4970 4521 4551 4581 4611 4641 4671 4701 4731 4761 4791 4821 4851 4881 4911 4941 4971 4522 4552 4582 4612 4642 4672 4702 4732 4762 4792 4822 4852 4882 4912 4942 4972 4523 4553 4583 4613 4643 4673 4703 4733 4763 4793 4823 4853 4883 4913 4943 4973 4524 4554 4584 4614 4644 4674 4704 4734 4764 4794 4824 4854 4884 4914 4944 4974 4525 4555 4585 4615 4645 4675 4705 4735 4765 4795 4825 4855 4885 4915 4945 4975 4526 4556 4586 4616 4646 4676 4706 4736 4766 4796 4826 4856 4886 4916 4946 4976 4527 4557 4587 4617 4647 4677 4707 4737 4767 4797 4827 4857 4887 4917 4947 4977 4528 4558 4588 4618 4648 4678 4708 4738 4768 4798 4828 4858 4888 4918 4948 4978 4529 4559 4589 4619 4649 4679 4709 4739 4769 4799 4829 4859 4889 4919 4949 4979 4530 4560 4590 4620 4650 4680 4710 4740 4770 4800 4830 4860 4890 4920 4950 4980 Columns 17 through 30 4981 5011 5041 5071 5101 5131 5161 5191 5221 5251 5281 5311 5341 5371 4982 5012 5042 5072 5102 5132 5162 5192 5222 5252 5282 5312 5342 5372 4983 5013 5043 5073 5103 5133 5163 5193 5223 5253 5283 5313 5343 5373 4984 5014 5044 5074 5104 5134 5164 5194 5224 5254 5284 5314 5344 5374 4985 5015 5045 5075 5105 5135 5165 5195 5225 5255 5285 5315 5345 5375 4986 5016 5046 5076 5106 5136 5166 5196 5226 5256 5286 5316 5346 5376 4987 5017 5047 5077 5107 5137 5167 5197 5227 5257 5287 5317 5347 5377 4988 5018 5048 5078 5108 5138 5168 5198 5228 5258 5288 5318 5348 5378 4989 5019 5049 5079 5109 5139 5169 5199 5229 5259 5289 5319 5349 5379 4990 5020 5050 5080 5110 5140 5170 5200 5230 5260 5290 5320 5350 5380 4991 5021 5051 5081 5111 5141 5171 5201 5231 5261 5291 5321 5351 5381 4992 5022 5052 5082 5112 5142 5172 5202 5232 5262 5292 5322 5352 5382 4993 5023 5053 5083 5113 5143 5173 5203 5233 5263 5293 5323 5353 5383 4994 5024 5054 5084 5114 5144 5174 5204 5234 5264 5294 5324 5354 5384 4995 5025 5055 5085 5115 5145 5175 5205 5235 5265 5295 5325 5355 5385 4996 5026 5056 5086 5116 5146 5176 5206 5236 5266 5296 5326 5356 5386 4997 5027 5057 5087 5117 5147 5177 5207 5237 5267 5297 5327 5357 5387 4998 5028 5058 5088 5118 5148 5178 5208 5238 5268 5298 5328 5358 5388 4999 5029 5059 5089 5119 5149 5179 5209 5239 5269 5299 5329 5359 5389 5000 5030 5060 5090 5120 5150 5180 5210 5240 5270 5300 5330 5360 5390 5001 5031 5061 5091 5121 5151 5181 5211 5241 5271 5301 5331 5361 5391 5002 5032 5062 5092 5122 5152 5182 5212 5242 5272 5302 5332 5362 5392 5003 5033 5063 5093 5123 5153 5183 5213 5243 5273 5303 5333 5363 5393 5004 5034 5064 5094 5124 5154 5184 5214 5244 5274 5304 5334 5364 5394 5005 5035 5065 5095 5125 5155 5185 5215 5245 5275 5305 5335 5365 5395 5006 5036 5066 5096 5126 5156 5186 5216 5246 5276 5306 5336 5366 5396 5007 5037 5067 5097 5127 5157 5187 5217 5247 5277 5307 5337 5367 5397 5008 5038 5068 5098 5128 5158 5188 5218 5248 5278 5308 5338 5368 5398 5009 5039 5069 5099 5129 5159 5189 5219 5249 5279 5309 5339 5369 5399
b = reshape(sum(reshape(a,10,3,10,3,10,3),[1,3,5]),3,3,3)
b =
b(:,:,1) = 4190500 4490500 4790500 4200500 4500500 4800500 4210500 4510500 4810500 b(:,:,2) = 13190500 13490500 13790500 13200500 13500500 13800500 13210500 13510500 13810500 b(:,:,3) = 22190500 22490500 22790500 22200500 22500500 22800500 22210500 22510500 22810500
sum(a(1:10,1:10,1:10),'all') % for conparison
ans = 4190500
  2 commentaires
Stephen23
Stephen23 le 3 Oct 2023
Some timings:
A = reshape(1:30*30*30,30,30,30);
timeit(@()sepblockfun(A,[10,10,10],'sum'))
ans = 8.7780e-05
timeit(@() cellfunsum(A))
ans = 5.4878e-04
timeit(@() lotsaloops(A))
ans = 7.2340e-05
timeit(@() reshape(sum(reshape(A,10,3,10,3,10,3),[1,3,5]),3,3,3))
ans = 1.4374e-05
isequal(sepblockfun(A,[10,10,10],'sum'), cellfunsum(A), lotsaloops(A), ...
reshape(sum(reshape(A,10,3,10,3,10,3),[1,3,5]),3,3,3)) % checking
ans = logical
1
function B = cellfunsum(A)
D = 10*ones(1,3);
B = cellfun(@(M) sum(M, 'all'), mat2cell(A, D,D,D) );
end
function out = lotsaloops(A)
out = nan(3,3,3);
for i = 1:3
for j = 1:3
for k = 1:3
ind1_1 = 1 + (i-1)*10;
ind1_2 = i * 10;
ind2_1 = 1 + (j-1)*10;
ind2_2 = j * 10;
ind3_1 = 1 + (k-1)*10;
ind3_2 = k * 10;
temp = A(ind1_1:ind1_2, ind2_1:ind2_2, ind3_1:ind3_2);
out(i,j,k) = sum(temp(:));
end
end
end
end
Matt J
Matt J le 3 Oct 2023
Modifié(e) : Matt J le 3 Oct 2023
The reshape solution is essentially a hardcode of sepblockfun, as can be seen in the timings with larger data:
N=300;
A = reshape(1:N^3,N,N,N);
timeit(@()sepblockfun(A,[10,10,10],'sum'))
ans = 0.0192
M=N/10;
timeit(@() reshape(sum(reshape(A,10,M,10,M,10,M),[1,3,5]),M,M,M))
ans = 0.0193

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by