Diese Software ist eine verbesserte Version des Spektrumanalysator-Software, einer Software, die ich habe zuvor entwickelt. In dieser Version habe ich mehr Steuerelemente integriert und die Benutzeroberfläche sowie das Layout der Software verbessert.
This software is an enhanced version of Spectrum Analyzer, a software I wrote previously. In this version, I incorporated more controls and improved UI and layout of the software.
MainClass
starts the software, loadsspectrum_analyzer.fxml
, appliesstyle.css
, sets stage title to "Spectrum Analyzer", and displays 1200x800 sceneSignalProcessor
generates simulated spectrum data with 16384 bins, default frequency range 20 Hz to 1000 HzSignalProcessor
initializesSpectrumData
,SignalClassifier
,Demodulator
, and usesExecutorService
for asynchronous data generationSignalProcessor
sets frequency range viasetFrequencyRange
, updatesminFreq
,maxFreq
, and regenerates dataSignalProcessor
sets analysis mode (FFT or Swept-Tuned) viasetAnalysisMode
and regenerates dataSignalProcessor
sets window function (Hanning, Blackman-Harris, Kaiser, Flat-Top, Gaussian) viasetWindowFunction
and regenerates dataSignalProcessor
sets demodulation type (None, AM, FM, PM, QAM, PSK, OFDM) viasetDemodulationType
and regenerates dataSignalProcessor
sets sweep speed viasetSweepSpeed
, scales amplitudes in Swept-Tuned mode, and regenerates dataSignalProcessor
generates simulated data with noise floor (-160 - 20 * log10(maxFreq/1000)
) and Gaussian peaks for Wi-Fi (150 Hz, +100 dB), Bluetooth (2440 MHz, +80 dB), LTE (1800 MHz, +90 dB), 5G NR (3600 MHz, +85 dB), Zigbee (2425 MHz, +75 dB)SignalProcessor
applies window function to amplitudes, generates random phases (0 to 2π), and demodulates if enabledSignalProcessor
generates window function array in parallel usingIntStream
for Hanning, Blackman-Harris, Kaiser, Flat-Top, or GaussianSignalProcessor
computes modified Bessel function (besselI0
) for Kaiser windowSignalProcessor
classifies signal type viaSignalClassifier
and provides frequency-specific classificationSpectrumData
stores amplitudes, phases,minFreq
,maxFreq
, and size (16384)SpectrumData
updates data viaupdate
method and provides getters for amplitudes, phases, frequency range, and sizeDemodulator
demodulates amplitudes based on type: AM (abs(amp) * cos(phase)), FM ((phase[i] - phase[i-1]) / 2π
), PM (phase / 2π
), QAM (sqrt(I^2 + Q^2)
), PSK (quantized phase toπ/4
), OFDM (abs(amp) * cos(phase + random offset)
)Demodulator
generates random phase offset (0 to π/8) for OFDMSignalClassifier
identifies signal type based on peak frequency and amplitude: Bluetooth (2400–2480 MHz, >-100 dBm), Wi-Fi (100–200 Hz, >-80 dBm), LTE (700–2700 MHz, >-90 dBm), 5G NR (3500–3700 MHz, >-95 dBm), Zigbee (2400–2450 MHz, >-105 dBm), else UnknownSignalClassifier
calculates confidence (90% if peak count < 5, else 70%) and returns signal type with percentageSpectrumCanvas
renders spectrum plot with 1160x400 resolution, supports zoom (scroll), pan (drag), and marker addition (double-click)SpectrumCanvas
sets dynamic range (default 160 dB), channel bandwidth (default 1000 Hz), channel count (default 1), log scale, display mode (Spectrum), grid visibility, and grid spacingSpectrumCanvas
adds annotations at specified coordinates and clears them viaclearAnnotations
SpectrumCanvas
resets zoom (zoomFactor
= 1.0) and pan (offsetX
= 0.0) viaresetZoomPan
SpectrumCanvas
adds markers at specified frequency with amplitude and signal type, clears user-added markersSpectrumCanvas
updates canvas by drawing spectrum or persistence plot, grid, channels, markers, and annotationsSpectrumCanvas
draws spectrum as yellow line plot, scaling x-axis (width
/amplitudes.length
) and y-axis (height
/dynamicRange
)SpectrumCanvas
draws persistence plot as green heatmap, decaying buffer values (* 0.95) and adding amplitude contributionsSpectrumCanvas
draws grid with frequency and amplitude labels ifgridVisible
, usinggridSpacing
linesSpectrumCanvas
draws red channel markers based onchannelBandwidth
andchannelCount
around center frequencySpectrumCanvas
draws cyan markers with frequency and amplitude labelsSpectrumCanvas
draws white text annotations at specified coordinatesSpectrumCanvas
detects peaks (amplitude > neighbors and >-100 dBm) and adds them asMarker
objects tometricsData
SpectrumCanvas
converts pixel x-coordinate to frequency based on zoom and offsetSpectrumCanvas
computes channel power as average power (dBm) within main channel bandwidthSpectrumCanvas
computes ACPR as difference between main and adjacent channel powerDemodCanvas
renders demodulated signal as yellow waveform on 1160x150 canvas, scaling x-axis (width
/amplitudes.length
) and y-axis (height
/ 400)DemodCanvas
draws dark gray center lineMarker
represents marker or peak with type, frequency, amplitude, and signal typeAnnotation
represents text annotation with text and x, y coordinatesSpectrumAnalyzerController
initializes GUI,SignalProcessor
,SpectrumCanvas
, andDemodCanvas
SpectrumAnalyzerController
sets up UI listeners for frequency slider (20 Hz to 50 GHz), dynamic range slider (100–200 dB), sweep speed slider (0.1–10), display mode combo box (Spectrum), analysis mode combo box (FFT, Swept-Tuned), window combo box, demodulation combo box, channel bandwidth field, channel count field (1–5), log scale toggle, export button, reset button, zoom/pan reset button, marker buttons, grid toggle, grid spacing slider, and annotation buttonSpectrumAnalyzerController
validates channel bandwidth (>0) and channel count (1–5) inputsSpectrumAnalyzerController
updates channel power, ACPR, and signal type labels in real-timeSpectrumAnalyzerController
updates window info label with sidelobe and resolution details for selected window functionSpectrumAnalyzerController
exports channel power and ACPR topower_report.csv
SpectrumAnalyzerController
resets settings to defaults: frequency 1000 Hz, dynamic range 160 dB, sweep speed 1.0, FFT mode, Hanning window, no demodulation, channel bandwidth 1000 Hz, channel count 1, log scale off, grid on, grid spacing 10SpectrumAnalyzerController
resets zoom and pan viaresetZoomPan
SpectrumAnalyzerController
adds marker at center frequencySpectrumAnalyzerController
clears all markersSpectrumAnalyzerController
adds annotation at canvas center if text is providedSpectrumAnalyzerController
displays alerts for success or error messagesSpectrumAnalyzerController
usesAnimationTimer
to continuously updateSpectrumCanvas
,DemodCanvas
, and metrics labels
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |