Skip to contents

This function performs the MUSIC (MUltiple SIgnal Classification) algorithm on a given SeaSondeRCS object, executing a series of processing steps to extract direction-of-arrival (DOA) information and other related metrics from the radar cross-spectrum data.

Usage

seasonder_runMUSIC(seasonder_cs_object)

Arguments

seasonder_cs_object

A SeaSondeRCS object that contains the radar cross-spectrum data and metadata. This object is modified in place to include the results of the MUSIC algorithm.

Value

A SeaSondeRCS object with updated MUSIC-related attributes. Specifically:

  • Processing steps annotated with the MUSIC start and end points.

  • Updated attributes and fields for covariance matrix computations, DOA estimations, and other MUSIC-related metrics.

Details

The MUSIC algorithm is executed in a series of sequential steps:

  1. Log the start of the MUSIC algorithm.

  2. Update the processing steps of the SeaSondeRCS object to include the MUSIC start text.

  3. Perform the following computations:

    • Compute the covariance matrix from the cross-spectrum data.

    • Perform eigen decomposition on the covariance matrix.

    • Compute the DOA functions using MUSIC-specific methods.

    • Extract peaks from the DOA functions, corresponding to possible signal directions.

    • Calculate the signal power matrix.

    • Test for dual solutions and compute their proportions.

    • Select the final set of DOAs from the computed data.

    • Convert the selected DOAs to geographical coordinates (latitude and longitude).

  4. Log the completion of the MUSIC algorithm.

See also

seasonder_MUSICComputeCov: Compute the covariance matrix. seasonder_MUSICCovDecomposition: Perform eigen decomposition of the covariance matrix. seasonder_MUSICComputeDOAProjections: Compute the direction-of-arrival functions. seasonder_MUSICExtractPeaks: Extract peaks from the DOA functions. seasonder_MUSICComputeSignalPowerMatrix: Calculate the signal power matrix. seasonder_MUSICTestDualSolutions: Test and analyze dual solutions in the DOA. seasonder_MUSICComputePropDualSols: Compute proportions for dual solutions. seasonder_MUSICSelectDOA: Select final DOA estimations. seasonder_MUSIC_LonLat: Convert DOA estimations to geographical coordinates.

Examples

# \donttest{
# Prepare a SeaSondeRCS object with MUSIC data
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.
cs_obj <- seasonder_initMUSICData(cs_obj)
cs_obj <- seasonder_initMUSICData(
 cs_obj,
 range_cells = c(rep(5,11), rep(4,11)),
 doppler_bins = c(c(669:679),c(674:684))
)
cs_obj <- seasonder_SeaSondeRCSMUSICInterpolateDoppler(cs_obj)
# Run the MUSIC algorithm
cs_obj <- seasonder_runMUSIC(cs_obj)
#> seasonder_runMUSIC:  MUSIC algorithm started.
#> seasonder_runMUSIC:  MUSIC algorithm finished.
# Check the updated processing steps
print(seasonder_getSeaSondeRCS_ProcessingSteps(cs_obj))
#>  [1] "2025-04-28 09:33:49.425408: FOR parameters set."                                                                       
#>  [2] "2025-04-28 09:33:49.436528: NoiseLevel for antenna 1 computed."                                                        
#>  [3] "2025-04-28 09:33:49.585828: NoiseLevel for antenna 2 computed."                                                        
#>  [4] "2025-04-28 09:33:49.597536: NoiseLevel for antenna 3 computed."                                                        
#>  [5] "2025-04-28 09:33:49.605477: Created from /home/runner/work/_temp/Library/SeaSondeR/css_data/CSS_TORA_24_04_04_0700.cs."
#>  [6] "2025-04-28 09:33:49.659715: MUSIC algorithm started."                                                                  
#>  [7] "2025-04-28 09:33:49.659964: MUSIC covariance matrix computation started"                                               
#>  [8] "2025-04-28 09:33:49.663095: MUSIC covariance matrix computation ended"                                                 
#>  [9] "2025-04-28 09:33:49.665446: NoiseLevel for antenna 1 computed."                                                        
#> [10] "2025-04-28 09:33:49.66765: NoiseLevel for antenna 2 computed."                                                         
#> [11] "2025-04-28 09:33:49.669849: NoiseLevel for antenna 3 computed."                                                        
#> [12] "2025-04-28 09:33:49.673722: MUSIC covariance matrix decomposition started"                                             
#> [13] "2025-04-28 09:33:49.675404: MUSIC covariance matrix decomposition ended"                                               
#> [14] "2025-04-28 09:33:49.675622: MUSIC DOA functions computation started"                                                   
#> [15] "2025-04-28 09:33:49.703844: MUSIC DOA functions computation ended"                                                     
#> [16] "2025-04-28 09:33:49.704067: MUSIC peak extraction started"                                                             
#> [17] "2025-04-28 09:33:49.718834: MUSIC peak extraction ended"                                                               
#> [18] "2025-04-28 09:33:49.721815: MUSIC dual solutions testing started"                                                      
#> [19] "2025-04-28 09:33:49.737123: MUSIC dual solutions testing ended"                                                        
#> [20] "2025-04-28 09:33:49.737394: MUSIC DOA selection started"                                                               
#> [21] "2025-04-28 09:33:49.738629: MUSIC DOA selection ended"                                                                 
#> [22] "2025-04-28 09:33:49.742913: MUSIC algorithm ended with 42.9% of dual solutions."                                       
# }