%% Clear Workspace and Close figures clear; close all; clc; %% Intialize Laplace variable s = zpk('s'); addpath('./src/'); %% Simulation configuration Fs = 10e3; % Sampling Frequency [Hz] Ts = 1/Fs; % Sampling Time [s] %% Data record configuration Trec_start = 5; % Start time for Recording [s] Trec_dur = 100; % Recording Duration [s] Tsim = 2*Trec_start + Trec_dur; % Simulation Time [s] %% Shaped Noise V_noise = generateShapedNoise('Ts', 1/Fs, ... 'V_mean', 3.25, ... 't_start', Trec_start, ... 'exc_duration', Trec_dur, ... 'smooth_ends', true, ... 'V_exc', 0.05/(1 + s/2/pi/10)); %% Sweep Sine gc = 0.1; xi = 0.5; wn = 2*pi*92.7; % Notch filter at the resonance of the APA G_sweep = 0.2*(s^2 + 2*gc*xi*wn*s + wn^2)/(s^2 + 2*xi*wn*s + wn^2); V_sweep = generateSweepExc('Ts', Ts, ... 'f_start', 10, ... 'f_end', 400, ... 'V_mean', 3.25, ... 't_start', Trec_start, ... 'exc_duration', Trec_dur, ... 'sweep_type', 'log', ... 'V_exc', G_sweep*1/(1 + s/2/pi/500)); V_sweep_lf = generateSweepExc('Ts', Ts, ... 'f_start', 0.1, ... 'f_end', 10, ... 'V_mean', 3.25, ... 't_start', Trec_start, ... 'exc_duration', Trec_dur, ... 'sweep_type', 'log', ... 'V_exc', 0.2); %% High Frequency Shaped Noise [b,a] = cheby1(10, 2, 2*pi*[240 2e3], 'bandpass', 's'); wL = 0.005*tf(b, a); V_noise_hf = generateShapedNoise('Ts', 1/Fs, ... 'V_mean', 3.25, ... 't_start', Trec_start, ... 'exc_duration', Trec_dur, ... 'smooth_ends', true, ... 'V_exc', wL); %% Low Frequency Shaped Noise [b,a] = cheby1(10, 2, 2*pi*[10 260], 'bandpass', 's'); wL = 0.005*tf(b, a); V_noise_lf = generateShapedNoise('Ts', 1/Fs, ... 'V_mean', 3.25, ... 't_start', Trec_start, ... 'exc_duration', Trec_dur, ... 'smooth_ends', true, ... 'V_exc', wL); %% Sinus excitation with increasing amplitude V_sin = generateSinIncreasingAmpl('Ts', 1/Fs, ... 'V_mean', 3.25, ... 'sin_ampls', [0.1, 0.2, 0.4, 1, 2, 4], ... 'sin_period', 1, ... 'sin_num', 5, ... 't_start', Trec_start, ... 'smooth_ends', true); %% Zero Excitation Trec_start = 10; % Start time for Recording [s] Trec_dur = 10; % Recording Duration [s] Tsim = 2*Trec_start + Trec_dur; % Simulation Time [s] V_zero = generateShapedNoise('Ts', 1/Fs, ... 'V_mean', 1.25, ... 't_start', Trec_start, ... 'exc_duration', Trec_dur, ... 'smooth_ends', true, ... 'V_exc', tf(0)); %% Select the excitation signal V_exc = timeseries(V_zero(2,:), V_zero(1,:)); %% Plot figure; tiledlayout(1, 2, 'TileSpacing', 'Normal', 'Padding', 'None'); ax1 = nexttile; plot(V_exc.Time, squeeze(V_exc.Data)); xlabel('Time [s]'); ylabel('Amplitude [V]'); ax2 = nexttile; win = hanning(floor(length(squeeze(V_exc.Data))/8)); [pxx, f] = pwelch(squeeze(V_exc.Data), win, 0, [], Fs); plot(f, pxx) xlabel('Frequency [Hz]'); ylabel('Power Spectral Density [$V^2/Hz$]'); set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log'); xlim([1, Fs/2]); ylim([1e-10, 1e0]); %% Save data that will be loaded in the Simulink file save('./frf_data.mat', 'Fs', 'Ts', 'Tsim', 'Trec_start', 'Trec_dur', 'V_exc');