주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

스펙트럼 분석기 그래프

이 예제는 Quick Control Spectrum Analyzer를 사용하여 Keysight® Technologies N9040B 스펙트럼 분석기에서 파워 스펙트럼 데이터를 수집하는 방법을 보여줍니다.

소개

이 예제에서는 스펙트럼 분석기를 사용하여 2.402 GHz에서 2.48 GHz 사이의 Bluetooth® 대역 내에서 파워 스펙트럼 데이터를 수집합니다.

요구 사항

이 예제를 실행하려면 다음이 필요합니다.

  • Keysight 테크놀로지스 N9040B 스펙트럼 분석기

  • Keysight 테크놀로지스 N9040B 스펙트럼 분석기용 IVI-C 드라이버 (AgXSAn)

  • NI™ VISA 또는 Keysight VISA

  • NI IVI® 규정 준수 패키지 버전 16.0.1.2 이상

RF 스펙트럼 분석기 객체 생성

Quick Control 객체를 생성하고 사용 가능한 리소스와 드라이버를 검색합니다.

rfsa = rfspecan;
resources(rfsa)
ans = 
    ' TCPIP0::K-N9040B-91124.dhcp.mathworks.com::inst0::INSTR
     '

drivers(rfsa)
ans = 
    'Driver: AgXSAn
     Supported Models:
        M8920A, M90XA, M9290A, M9410A, M9411A, M9415A, M9420A
        M9421A, N8973B, N8974B, N8975B, N8976B, N9000A, N9000B
        N9010A, N9010B, N9020A, N9020B, N9021B, N9030A, N9030B
        N9032B, N9038A, N9038B, N9040B, N9041B, N9042B, N9048B
     
     Driver: rsspecan
     Supported Models:
     ESW, FPH, FPS, FSV, FSVA, FSVR, FSW, FSWP, FSWT
     
     '

선택한 리소스 및 드라이버에 연결

사용 가능한 리소스와 드라이버를 선택하십시오.

rfsa.Resource = "TCPIP0::K-N9040B-91124.dhcp.mathworks.com::inst0::INSTR";
rfsa.Driver = "AgXSAn";
connect(rfsa)
disp(rfsa)
  RFSpecAn with properties:

                Resource: "TCPIP0::K-N9040B-91124.dhcp.mathworks.com::inst0::INSTR"
                  Driver: "AgXSAn"
                  Vendor: "Keysight Technologies"
                   Model: "N9040B"
          StartFrequency: 10000000
           StopFrequency: 2.6500e+10
         CenterFrequency: 1.3255e+10
                    Span: 2.6490e+10
               SweepTime: 0.0665
     ResolutionBandwidth: 3000000
          VideoBandwidth: 3000000
           VerticalScale: Logarithmic
          AmplitudeUnits: dBm
          ReferenceLevel: 0
    ReferenceLevelOffset: 0

  Show all properties, functions

시작 및 정지 주파수 설정

시작 주파수를 2.402 GHz인 블루투스 대역의 시작 지점 바로 아래로 설정하십시오. 정지 주파수를 2.48 GHz인 블루투스 대역의 끝 지점 바로 위로 설정하십시오.

rfsa.StartFrequency = 2.4e9;
rfsa.StopFrequency = 2.5e9
  RFSpecAn with properties:

                Resource: "TCPIP0::K-N9040B-91124.dhcp.mathworks.com::inst0::INSTR"
                  Driver: "AgXSAn"
                  Vendor: "Keysight Technologies"
                   Model: "N9040B"
          StartFrequency: 2.4000e+09
           StopFrequency: 2.5000e+09
         CenterFrequency: 2.4500e+09
                    Span: 100000000
               SweepTime: 1.0000e-03
     ResolutionBandwidth: 910000
          VideoBandwidth: 910000
           VerticalScale: Logarithmic
          AmplitudeUnits: dBm
          ReferenceLevel: 0
    ReferenceLevelOffset: 0

  Show all properties, functions

파워 스펙트럼 진폭 데이터 수집

실수 값을 갖는 파워 스펙트럼 100개를 수집하십시오. 각 스펙트럼에는 TraceSize와 동일한 수의 데이터 포인트가 포함되며, TraceSize는 N9040B에서 고정된 값입니다.

n = 100;
data = nan(rfsa.TraceSize, n);
for i = 1:n
    data(:, i) = readPowerSpectrum(rfsa);
end

수집된 데이터의 평균과 엔벨로프를 그래프로 표시하십시오

이는 사실상 “최소 홀드(Minimum Hold)” 및 “최대 홀드(Maximum Hold)” 추적 유형을 사용하여 데이터를 수집하는 것과 동일합니다.

Amin = min(data, [], 2);
Amax = max(data, [], 2);
Amean = mean(data, 2);

f = linspace(rfsa.StartFrequency, rfsa.StopFrequency, rfsa.TraceSize);

figure;
hold on

plot(f, Amin, LineWidth=2);
plot(f, Amax, LineWidth=2);
plot(f, Amean, LineWidth=2);

title("|A(f)|")
% Label using the current units of amplitude, which are set to "dBm" by
% default.
ylabel(string(rfsa.AmplitudeUnits));
xlabel("Hz")

setAxesSpectrumAnalyzer(gca);

현재 데이터를 실시간으로 그래프에 표시하고 최대값 및 최소값을 추적합니다

전면 패널 디스플레이에 관측된 데이터를 세 개의 파형(샘플, 최소값, 최대값)으로 표시합니다.

figure;

Amin = data(:, 1);
Amax = data(:, 1);
Anext = data(:, 1);

p = plot(f, Amin, f, Anext, f, Amax, LineWidth=2);
ax = gca;
setAxesSpectrumAnalyzer(ax)
colors = colororder;
order = [1 3 2];
ax.ColorOrder = colors(order, :);

title("|A(f)|")
ylabel(string(rfsa.AmplitudeUnits));
xlabel("Hz")

axis tight

p(1).YDataSource =  'Amin';
p(2).YDataSource =  'Anext';
p(3).YDataSource =  'Amax';

for i = 2:n
    Anext = data(:, i);
    Amin = min(Amin, Anext);
    Amax = max(Amax, Anext);

    axis tight
    refreshdata
    drawnow limitrate nocallbacks    
    pause(0.100);
end

전면 패널 디스플레이

function setAxesSpectrumAnalyzer(haxes)
% Configure the plot to look like a front-panel display
% of a stand-alone instrument.

set(haxes, 'Color', [0.150 0.150 0.150], ...
           'GridColor', [1 1 1], ...
           'GridLineWidth', 1, ...
           'XGrid','on', ...
           'YGrid','on');
end