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.
MainClassstarts the software, loadsspectrum_analyzer.fxml, appliesstyle.css, sets stage title to "Spectrum Analyzer", and displays 1200x800 sceneSignalProcessorgenerates simulated spectrum data with 16384 bins, default frequency range 20 Hz to 1000 HzSignalProcessorinitializesSpectrumData,SignalClassifier,Demodulator, and usesExecutorServicefor asynchronous data generationSignalProcessorsets frequency range viasetFrequencyRange, updatesminFreq,maxFreq, and regenerates dataSignalProcessorsets analysis mode (FFT or Swept-Tuned) viasetAnalysisModeand regenerates dataSignalProcessorsets window function (Hanning, Blackman-Harris, Kaiser, Flat-Top, Gaussian) viasetWindowFunctionand regenerates dataSignalProcessorsets demodulation type (None, AM, FM, PM, QAM, PSK, OFDM) viasetDemodulationTypeand regenerates dataSignalProcessorsets sweep speed viasetSweepSpeed, scales amplitudes in Swept-Tuned mode, and regenerates dataSignalProcessorgenerates 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)SignalProcessorapplies window function to amplitudes, generates random phases (0 to 2π), and demodulates if enabledSignalProcessorgenerates window function array in parallel usingIntStreamfor Hanning, Blackman-Harris, Kaiser, Flat-Top, or GaussianSignalProcessorcomputes modified Bessel function (besselI0) for Kaiser windowSignalProcessorclassifies signal type viaSignalClassifierand provides frequency-specific classificationSpectrumDatastores amplitudes, phases,minFreq,maxFreq, and size (16384)SpectrumDataupdates data viaupdatemethod and provides getters for amplitudes, phases, frequency range, and sizeDemodulatordemodulates 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))Demodulatorgenerates random phase offset (0 to π/8) for OFDMSignalClassifieridentifies 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 UnknownSignalClassifiercalculates confidence (90% if peak count < 5, else 70%) and returns signal type with percentageSpectrumCanvasrenders spectrum plot with 1160x400 resolution, supports zoom (scroll), pan (drag), and marker addition (double-click)SpectrumCanvassets dynamic range (default 160 dB), channel bandwidth (default 1000 Hz), channel count (default 1), log scale, display mode (Spectrum), grid visibility, and grid spacingSpectrumCanvasadds annotations at specified coordinates and clears them viaclearAnnotationsSpectrumCanvasresets zoom (zoomFactor= 1.0) and pan (offsetX= 0.0) viaresetZoomPanSpectrumCanvasadds markers at specified frequency with amplitude and signal type, clears user-added markersSpectrumCanvasupdates canvas by drawing spectrum or persistence plot, grid, channels, markers, and annotationsSpectrumCanvasdraws spectrum as yellow line plot, scaling x-axis (width/amplitudes.length) and y-axis (height/dynamicRange)SpectrumCanvasdraws persistence plot as green heatmap, decaying buffer values (* 0.95) and adding amplitude contributionsSpectrumCanvasdraws grid with frequency and amplitude labels ifgridVisible, usinggridSpacinglinesSpectrumCanvasdraws red channel markers based onchannelBandwidthandchannelCountaround center frequencySpectrumCanvasdraws cyan markers with frequency and amplitude labelsSpectrumCanvasdraws white text annotations at specified coordinatesSpectrumCanvasdetects peaks (amplitude > neighbors and >-100 dBm) and adds them asMarkerobjects tometricsDataSpectrumCanvasconverts pixel x-coordinate to frequency based on zoom and offsetSpectrumCanvascomputes channel power as average power (dBm) within main channel bandwidthSpectrumCanvascomputes ACPR as difference between main and adjacent channel powerDemodCanvasrenders demodulated signal as yellow waveform on 1160x150 canvas, scaling x-axis (width/amplitudes.length) and y-axis (height/ 400)DemodCanvasdraws dark gray center lineMarkerrepresents marker or peak with type, frequency, amplitude, and signal typeAnnotationrepresents text annotation with text and x, y coordinatesSpectrumAnalyzerControllerinitializes GUI,SignalProcessor,SpectrumCanvas, andDemodCanvasSpectrumAnalyzerControllersets 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 buttonSpectrumAnalyzerControllervalidates channel bandwidth (>0) and channel count (1–5) inputsSpectrumAnalyzerControllerupdates channel power, ACPR, and signal type labels in real-timeSpectrumAnalyzerControllerupdates window info label with sidelobe and resolution details for selected window functionSpectrumAnalyzerControllerexports channel power and ACPR topower_report.csvSpectrumAnalyzerControllerresets 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 10SpectrumAnalyzerControllerresets zoom and pan viaresetZoomPanSpectrumAnalyzerControlleradds marker at center frequencySpectrumAnalyzerControllerclears all markersSpectrumAnalyzerControlleradds annotation at canvas center if text is providedSpectrumAnalyzerControllerdisplays alerts for success or error messagesSpectrumAnalyzerControllerusesAnimationTimerto continuously updateSpectrumCanvas,DemodCanvas, and metrics labels
![]() |
![]() |
![]() |
|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)