アナログ入力を手軽に得る方法に、Analog Discoveryを使う方法があります。現在Analog Discovery2(写真左)が市販されています。もうすぐAnalog Discovery Proが発売されます。
Analog Discovery2は、オシロスコープだけではなく、スペアナやネットワーク・アナライザなど多くの機能が使えます。
Analog Discovery2の機能を使う準備
Data Acquisition Toolbox(有料)に加えてData Acquisition Toolbox Support Package for Digilent Analog Discovery Hardware(無料?)をインストールします。
Analog Discovery2のソフトWaveforms のバージョンは3.12.2です。ひとつ古いままです。
Data Acquisition ToolboxのアプリAnalog Input Recorderからは探し出してくれませんでした。ライブエディタで直接記述します。
ファンクション・ジェネレータFGX-2005の出力を、Analog Discovery2のCh1につないでいます。
プログラム
Analog Discovery2をUSBケーブルでPCにつなぎます。
daqlist("digilent")
で探してきます。
ch1入力の設定をします。±2.5Vレンジです。
dq = daq("digilent");
ch_in = addinput(dq, "AD1", "1", "Voltage");
ch_in.Name = "AD1_1_in";
dq.Rate = 1e6;
ch_in.Range = [-2.5 2.5];
データを1秒間読み出します。全部プロットすると波形がわからないので、100個ほど取り出しています。
samplingTimes = 1;
AD1_1_in = read(dq, seconds(samplingTimes))
%summary(AD1_1_in)
data = AD1_1_in(10:100,:)
plot(data.Time, data.AD1_1_in);
xlabel('時間 [秒]');
ylabel('電圧 [V]');
title(['Clocked Data Triggered on: ' datestr(data.Time(1))]);
grid on
ファンクション・ジェネレータは20kHz、デューティ20%の方形波です。ほぼ正しく取り込めています。

FFTを掛けます。fft関数を使うとマイナスの値も計算するので、プラス側だけのデータを取り出しています。
fs = 1000000;
data0 = AD1_1_in.AD1_1_in;
Y = fft(data0);
L = length(data0);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = fs*(0:(L/2))/L;
plot(f,P1)
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')
grid on

両対数グラフにします。
loglog(f,P1)
xlabel('f (Hz)')
ylabel('|P1(f)|')
grid on

(※)matlabはR2020bアップデート4です。