Define functions in code and edit code?

11 visualizzazioni (ultimi 30 giorni)
Bob Meyes
Bob Meyes il 26 Mar 2024
Commentato: Dyuman Joshi il 27 Mar 2024
Can you define the following 3 vectorized functions in the code: launch_yr_4d(y2d), apogee, and perigee. The code is below:
% Fetch TLE data from the URL
url_recent = 'https://celestrak.org/NORAD/elements/gp.php?GROUP=visual&FORMAT=tle';
line_list = string(splitlines(webread(url_recent)));
% Ensure line_list has a multiple of 3 number of lines for proper reshaping
line_list = line_list(1:floor(numel(line_list)/3)*3);
% Reshape the line list to separate each TLE into its own column
tle_data = reshape(line_list, 3, []);
% Define Constant used in function
earth_mean_radius = 6371; % km
% Define the functions: launch_yr_4d(y2d), apogee(mean_motion, eccentricity), perigee(mean_motion, eccentricity)
launch_yr_4d = @(y2d) (y2d >= 24) .* (1900 + y2d) + (y2d < 24) .* (2000 + y2d);
apogee = @(mean_motion, eccentricity) (8681663.653 ./ mean_motion) .^ (2/3) .* (1 + eccentricity) - earth_mean_radius;
perigee = @(mean_motion, eccentricity) (8681663.653 ./ mean_motion) .^ (2/3) .* (1 - eccentricity) - earth_mean_radius;
% Extract satellite numbers, launch years, eccentricities, and mean motions in batches
satellite_numbers = str2double(extractBetween(tle_data(2,:), 3, 7));
launch_years_2digit = str2double(extractBetween(tle_data(2,:), 10, 11));
launch_years = launch_yr_4d(launch_years_2digit);
eccentricities = str2double(extractBetween(tle_data(3,:), 27, 33)) * 0.0000001;
mean_motions = str2double(extractBetween(tle_data(3,:), 53, 63));
% Compute perigee and apogee heights in batches
hps = perigee(mean_motions, eccentricities);
has = apogee(mean_motions, eccentricities);
% Convert numerical values to strings with formatting
satNumStr = sprintfc('%05d', satellite_numbers);
launchYearStr = sprintfc('%04d', launch_years);
hpStr = sprintfc('%.2f', round(hps, 2));
haStr = sprintfc('%.2f', round(has, 2));
% Concatenate all string parts
outputStrings = strcat(satNumStr, " ", launchYearStr, " ", hpStr, " ", haStr, " ", string(tle_data(1, :)));
% Join and print all strings
fprintf('%s\n', join(outputStrings, newline));
00694 1963 464.88 1287.62 ATLAS CENTAUR 2 00733 1964 764.58 812.41 THOR AGENA D R/B 00877 1964 645.03 754.12 SL-3 R/B 02802 1967 704.49 796.77 SL-8 R/B 03230 1968 569.05 607.13 SL-8 R/B 03597 1968 739.89 748.79 OAO 2 03669 1969 582.98 3453.08 ISIS 1 04327 1970 1044.43 1051.38 SERT 2 04814 1970 254.93 257.61 SL-3 R/B 05118 1971 468.90 519.18 SL-3 R/B 05560 1971 724.53 746.23 ASTEX 1 05730 1971 385.09 1280.28 SL-8 R/B 06073 1972 195.66 1293.35 COSMOS 482 DESCENT CRAFT 06153 1972 699.85 708.49 OAO 3 (COPERNICUS) 06155 1972 630.43 680.15 ATLAS CENTAUR R/B 08459 1975 763.11 785.39 SL-8 R/B 10114 1977 487.00 501.09 SL-3 R/B 10967 1978 748.53 750.94 SEASAT 1 11267 1979 594.02 614.77 SL-14 R/B 11574 1979 749.28 772.38 SL-8 R/B 11672 1980 595.68 619.22 SL-14 R/B 12139 1981 372.52 897.18 SL-8 R/B 12465 1981 484.17 521.18 SL-3 R/B 12585 1981 455.96 470.44 METEOR PRIRODA 12904 1981 524.37 553.48 SL-3 R/B 13068 1982 516.29 553.02 SL-3 R/B 13154 1982 538.47 589.85 SL-3 R/B 13403 1982 510.96 554.82 SL-3 R/B 13552 1982 394.93 413.20 COSMOS 1408 13553 1982 604.60 635.19 SL-14 R/B 13819 1983 480.31 513.57 SL-3 R/B 14032 1983 463.39 477.43 COSMOS 1455 14208 1983 491.84 534.10 SL-3 R/B 14372 1983 456.15 473.14 COSMOS 1500 14699 1984 526.18 550.09 COSMOS 1536 14819 1984 378.95 381.93 COSMOS 1544 14820 1984 608.80 634.91 SL-14 R/B 15483 1985 761.70 789.65 SL-8 R/B 15494 1985 431.15 433.84 COSMOS 1626 15772 1985 802.26 852.03 SL-12 R/B(2) 15945 1985 606.36 634.73 SL-14 R/B 16182 1985 837.54 851.83 SL-16 R/B 16496 1986 606.96 633.52 SL-14 R/B 16719 1986 488.99 500.73 COSMOS 1743 16792 1986 605.46 640.77 SL-14 R/B 16882 1986 609.30 636.84 SL-14 R/B 16908 1986 1485.82 1503.59 AJISAI (EGS) 17295 1987 483.59 487.61 COSMOS 1812 17567 1987 607.21 635.70 SL-14 R/B 17589 1987 840.70 871.98 COSMOS 1833 17590 1987 840.14 845.50 SL-16 R/B 17912 1987 609.88 637.67 SL-14 R/B 17973 1987 829.72 873.92 COSMOS 1844 18153 1987 608.71 637.25 SL-14 R/B 18187 1987 780.12 809.07 COSMOS 1867 18421 1987 471.52 484.43 COSMOS 1892 18749 1988 609.24 637.22 SL-14 R/B 18958 1988 543.23 549.07 COSMOS 1933 19046 1988 523.98 569.11 SL-3 R/B 19120 1988 818.54 850.58 SL-16 R/B 19210 1988 520.19 543.64 COSMOS 1953 19257 1988 757.40 786.45 SL-8 R/B 19573 1988 522.78 546.25 COSMOS 1975 19574 1988 608.97 636.73 SL-14 R/B 19650 1988 836.31 856.10 SL-16 R/B 20261 1989 504.62 2373.78 INTERCOSMOS 24 20262 1989 505.20 2441.25 SL-14 R/B 20323 1989 685.47 784.29 DELTA 1 R/B 20443 1990 762.04 776.92 ARIANE 40 R/B 20453 1990 408.96 704.04 DELTA 2 R/B(1) 20465 1990 557.03 574.19 COSMOS 2058 20466 1990 614.20 644.14 SL-14 R/B 20511 1990 622.92 644.13 SL-14 R/B 20580 1990 521.91 525.37 HST 20625 1990 838.48 861.70 SL-16 R/B 20663 1990 497.48 664.55 COSMOS 2084 20666 1990 514.28 649.72 SL-6 R/B(2) 20775 1990 367.84 1052.41 SL-8 R/B 21088 1991 964.82 996.23 SL-8 R/B 21397 1991 571.22 592.26 OKEAN-3 21422 1991 580.13 596.84 COSMOS 2151 21423 1991 621.27 647.49 SL-14 R/B 21574 1991 747.27 794.35 ERS-1 21610 1991 756.78 762.98 ARIANE 40 R/B 21819 1991 445.71 2855.22 INTERCOSMOS 25 21876 1992 960.88 1010.99 SL-8 R/B 21938 1992 965.20 1009.60 SL-8 R/B 22219 1992 839.24 867.61 COSMOS 2219 22220 1992 836.19 851.59 SL-16 R/B 22236 1992 589.54 612.88 COSMOS 2221 22285 1992 844.12 853.18 SL-16 R/B 22286 1992 585.69 613.83 COSMOS 2228 22566 1993 840.61 857.48 SL-16 R/B 22626 1993 588.21 613.36 COSMOS 2242 22803 1993 829.08 856.17 SL-16 R/B 22830 1993 784.88 799.31 ARIANE 40 R/B 23087 1994 847.07 858.21 COSMOS 2278 23088 1994 846.03 854.08 SL-16 R/B 23343 1994 637.86 648.19 SL-16 R/B 23405 1994 845.90 850.47 SL-16 R/B 23561 1995 764.04 775.48 ARIANE 40+ R/B 23705 1995 840.69 856.18 SL-16 R/B 24298 1996 847.89 868.07 SL-16 R/B 24883 1997 782.44 785.81 ORBVIEW 2 (SEASTAR) 25400 1998 806.86 819.58 SL-16 R/B 25407 1998 841.47 850.77 SL-16 R/B 25544 1998 421.96 428.47 ISS (ZARYA) 25732 1999 813.23 865.76 CZ-4B R/B 25860 1999 640.79 643.45 OKEAN-O 25861 1999 625.38 648.18 SL-16 R/B 25876 1999 497.48 1250.04 DELTA 2 R/B 25977 1999 622.81 624.20 HELIOS 1B 25994 1999 700.99 702.05 TERRA 26070 2000 834.96 859.78 SL-16 R/B 26474 2000 538.85 601.64 TITAN 4B R/B 27386 2002 769.52 771.49 ENVISAT 27422 2002 789.55 808.10 IDEFIX & ARIANE 42P R/B 27424 2002 702.18 704.76 AQUA 27432 2002 816.18 887.53 CZ-4B R/B 27597 2002 804.39 805.04 MIDORI II (ADEOS-II) 27601 2002 738.05 841.67 H-2A R/B 28059 2003 686.87 755.02 CZ-4B R/B 28222 2004 477.85 525.92 CZ-2C R/B 28353 2004 848.71 854.31 SL-16 R/B 28415 2004 500.75 559.43 CZ-4B R/B 28480 2004 709.31 913.37 CZ-2C R/B 28499 2004 566.73 692.02 ARIANE 5 R/B 28738 2005 493.69 509.46 CZ-2D R/B 28773 2005 451.73 452.67 SUZAKU (ASTRO-EII) 28931 2006 681.48 684.91 ALOS (DAICHI) 28932 2006 521.92 626.86 H-2A R/B 29228 2006 550.91 556.23 RESURS-DK 1 29252 2006 458.14 478.17 GENESIS 1 29507 2006 525.44 581.86 CZ-4B R/B 31114 2007 790.93 875.87 CZ-2C R/B 31598 2007 628.67 630.56 COSMO-SKYMED 1 31789 2007 451.12 493.64 GENESIS 2 31792 2007 849.89 864.60 COSMOS 2428 31793 2007 848.96 852.61 SL-16 R/B 33504 2009 488.17 510.14 KORONAS-FOTON 37731 2011 604.89 685.51 CZ-2C R/B 38341 2012 574.91 648.51 H-2A R/B 39271 2013 302.70 780.50 CUSAT 2 & FALCON 9 R/B 39358 2013 598.27 622.21 SHIJIAN-16 (SJ-16) 39364 2013 355.02 381.95 CZ-2C R/B 39679 2014 421.87 616.61 SL-4 R/B 39766 2014 636.91 639.19 ALOS-2 40354 2014 357.11 389.70 SL-27 R/B 41038 2015 629.39 633.54 YAOGAN-29 41337 2016 556.71 572.52 ASTRO-H (HITOMI) 42758 2017 523.09 524.49 HXMT (HUIYAN) 43521 2018 455.11 538.11 CZ-2C R/B 43641 2018 628.64 630.72 SAOCOM 1A 43682 2018 503.09 566.05 H-2A R/B 46265 2020 628.74 630.64 SAOCOM 1B 48274 2021 376.22 390.21 CSS (TIANHE) 48865 2021 465.82 477.25 COSMOS 2550 51842 2022 379.51 422.51 2022-019U 52794 2022 452.20 569.38 CZ-2C R/B 53131 2022 309.46 326.68 CZ-2C R/B 57800 2023 566.80 580.89 XRISM
  16 Commenti
Rik
Rik il 27 Mar 2024
Why is it restricted? Is this Cody? Or homework?
Dyuman Joshi
Dyuman Joshi il 27 Mar 2024
I don't think this is a Cody question, most likely a HW assignment.

Accedi per commentare.

Risposte (0)

Categorie

Scopri di più su Reference Applications 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