This function integrates the MUSIC (Multiple Signal Classification) algorithm into a SeaSondeRCS object that has First Order Regions (FOR) initialized. It first applies Doppler interpolation to the cross-spectra data, then extracts the FOR boundaries for each range cell by transforming the negative and positive FOR Doppler bins into frequency values and subsequently mapping these frequencies back to Doppler bins. Finally, the function initializes the MUSIC data structure and invokes the full MUSIC algorithm to update the SeaSondeRCS object.
Value
A SeaSondeRCS object with its MUSIC data updated after applying Doppler interpolation, FOR extraction, and the complete MUSIC processing.
Details
This function performs the following sequence of operations:
It retrieves the Doppler interpolation factor from the MUSIC options of the input object.
It obtains the FOR data from the object using
seasonder_getSeaSondeRCS_FOR
.For each range cell in the FOR data:
It processes the negative FOR bins by:
Determining the frequency range corresponding to the negative bins via
seasonder_Bins2DopplerFreq
.Mapping these frequencies to new Doppler bin indices with
seasonder_MUSIC_DopplerFreq2Bins
and adjusting the indices based on the interpolation factor.
It processes the positive FOR bins in an analogous manner.
If valid Doppler bin indices are obtained, a data frame is created recording the range cell and Doppler bin information.
The function compiles the extracted FOR information from all range cells into a single data frame.
It initializes the MUSIC data structure for the specified range cells and Doppler bins using
seasonder_initMUSICData
.Finally, it calls
seasonder_runMUSIC
to execute the MUSIC algorithm on the updated object.
Examples
# Prepare a SeaSondeRCS object with MUSIC data (including FOR segments)
apm_file <- system.file("css_data/MeasPattern.txt", package = "SeaSondeR")
apm_obj <- seasonder_readSeaSondeRAPMFile(apm_file)
#> seasonder_createSeaSondeRAPM: APM object created successfully.
cs_file <- system.file("css_data/CSS_TORA_24_04_04_0700.cs", package = "SeaSondeR")
cs_obj <- seasonder_createSeaSondeRCS(cs_file, seasonder_apm_object = apm_obj)
#> new_SeaSondeRCS: SeaSondeRCS object created successfully.
FOR <- seasonder_getSeaSondeRCS_FOR(cs_obj)
cs_obj <- seasonder_setSeaSondeRCS_FOR(cs_obj,FOR[4:5])
# Run MUSIC algorithm in FOR context
result <- seasonder_runMUSICInFOR(cs_obj)
#> seasonder_runMUSIC: MUSIC algorithm started.
#> seasonder_runMUSIC: MUSIC algorithm finished.
# View processing steps
print(seasonder_getSeaSondeRCS_ProcessingSteps(result))
#> [1] "2025-04-28 09:33:50.075009: FOR parameters set."
#> [2] "2025-04-28 09:33:50.086427: NoiseLevel for antenna 1 computed."
#> [3] "2025-04-28 09:33:50.101: NoiseLevel for antenna 2 computed."
#> [4] "2025-04-28 09:33:50.116105: NoiseLevel for antenna 3 computed."
#> [5] "2025-04-28 09:33:50.124186: Created from /home/runner/work/_temp/Library/SeaSondeR/css_data/CSS_TORA_24_04_04_0700.cs."
#> [6] "2025-04-28 09:33:50.139847: MUSIC algorithm started."
#> [7] "2025-04-28 09:33:50.140101: MUSIC covariance matrix computation started"
#> [8] "2025-04-28 09:33:50.148578: MUSIC covariance matrix computation ended"
#> [9] "2025-04-28 09:33:50.150852: NoiseLevel for antenna 1 computed."
#> [10] "2025-04-28 09:33:50.153084: NoiseLevel for antenna 2 computed."
#> [11] "2025-04-28 09:33:50.155293: NoiseLevel for antenna 3 computed."
#> [12] "2025-04-28 09:33:50.161217: MUSIC covariance matrix decomposition started"
#> [13] "2025-04-28 09:33:50.162642: MUSIC covariance matrix decomposition ended"
#> [14] "2025-04-28 09:33:50.162863: MUSIC DOA functions computation started"
#> [15] "2025-04-28 09:33:50.174638: MUSIC DOA functions computation ended"
#> [16] "2025-04-28 09:33:50.17486: MUSIC peak extraction started"
#> [17] "2025-04-28 09:33:50.181767: MUSIC peak extraction ended"
#> [18] "2025-04-28 09:33:50.18418: MUSIC dual solutions testing started"
#> [19] "2025-04-28 09:33:50.199105: MUSIC dual solutions testing ended"
#> [20] "2025-04-28 09:33:50.199381: MUSIC DOA selection started"
#> [21] "2025-04-28 09:33:50.200562: MUSIC DOA selection ended"
#> [22] "2025-04-28 09:33:50.2041: MUSIC algorithm ended with 40.0% of dual solutions."