Antwort
+++Code+++
% Vorbedingungen:
% - Neuestes R&S VISA installiert
clc;
analyzer_handle = visa('rs','TCPIP::10.205.0.101::INSTR'); % VISA-Verbindung, Toolbox erforderlich
analyzer_handle.OutputBufferSize = 1000000; % Ausgabepuffergröße in Byte
analyzer_handle.InputBufferSize = 1000000; % Eingabepuffergröße in Byte
fopen(analyzer_handle);
fprintf(analyzer_handle,'*RST;*WAI');
fprintf(analyzer_handle,'*IDN?');
a=fscanf(analyzer_handle);
disp(a);
fprintf(analyzer_handle,'INIT:CONT OFF'); % Single Sweep Mode wählen.
%--------------Konfigurieren von Frequenz und Darstellbreite-------------
fcenter=1000000000;
fprintf(analyzer_handle,'FREQ:CENT %d',fcenter); % Definition der Mittenfrequenz
fspan=5000000;
fprintf(analyzer_handle,'FREQ:SPAN %d',fspan); % Darstellbreite festlegen
%--------------Sweep konfigurieren--------------------------
fprintf(analyzer_handle,'SENS:SWE:COUN 1'); % definiert 1 Sweep
points=10000; % Anzahl Punkte setzt Auflösung der Messkurve
fprintf(analyzer_handle, 'SENS:SWE:POIN %d',points);
%--------------Bandbreite konfigurieren----------------------
fprintf(analyzer_handle,'BAND:AUTO OFF');
fprintf(analyzer_handle,'BAND 100000'); % definiert die Auflösebandbreite
fprintf(analyzer_handle,'BAND:VID 500kHz'); % entkoppelt die Videobandbreite von der Auflösebandbreite, Absenken zum Glätten der Messkurve.
%--------------Messkurvenerfassung-----------------------------
timeout=30; % Timeout in Sekunden
set(analyzer_handle,'Timeout',timeout); % Vergrößerung des Timeout vor Erfassung, um Sync-Fehler zu vermeiden
fprintf(analyzer_handle,'INIT:IMM;*WAI');
fprintf('Fetching waveform ...\n ');
fprintf(analyzer_handle,':FORM REAL,32');
fprintf(analyzer_handle,':TRAC? TRACE1;*WAI');
data=binblockread(analyzer_handle,'float32');
fread(analyzer_handle,1); % fread entfernt das Extra-Abschlusszeichen im Puffer
timeout=1; % Timeout in Sekunden auf einen normalen Wert
set(analyzer_handle,'Timeout',timeout);
%--------------Grafische Darstellung der Messkurve---------
fstart=fcenter-fspan/2;
fstop=fcenter+fspan/2;
resolution=fspan/points;
points_array=1:1:points;
for c = 1:points % Zeitachse und Leistungsdaten skalieren
points_array(1,c)=points_array(1,c)*resolution;
points_array(1,c)=points_array(1,c) + fstart;
end
plot(points_array,data);
title('SA Spectrum Acquisition')
xlabel('frequency domain [Hz]')
ylabel('power [dbm]')
%--------------Fehlerprüfung----------------------
fprintf(analyzer_handle,'SYST:ERR?');
a=fscanf(analyzer_handle);
disp(a);
fclose(analyzer_handle);
+++
Damit ergibt sich folgende im Spektrumanalysator beobachtete Messkurve, nachdem das obige Skript mit MATLAB® ausgeführt wurde.