%% make_vref_filter.m
%  Converte il filtro passa-basso 1/(tau*s+1) in forma State-Space
%  canonica controllabile, pronta per il blocco State-Space di Simulink
%  con condizioni iniziali non nulle.
%
%  USO:
%   1. Lancia questo script (o chiamalo dal demo prima di avviare la sim)
%   2. Copia A_f, B_f, C_f, D_f nel blocco State-Space in Simulink
%   3. Nel campo "Initial conditions" del blocco scrivi: v_ref_init
%      (o il nome della variabile che preferisci)
% =========================================================================

tau = 1;   %PRIMA ERA 2 [s] costante di tempo — cambia solo qui se vuoi modificarla

% Trasferimento: Y(s)/U(s) = 1 / (tau*s + 1)
num = 1;
den = [tau, 1];

[A_f, B_f, C_f, D_f] = tf2ss(num, den);

fprintf('Filtro v_ref:  1/(%.1f s + 1)\n', tau);
fprintf('A_f = %.6f\n', A_f);
fprintf('B_f = %.6f\n', B_f);
fprintf('C_f = %.6f\n', C_f);
fprintf('D_f = %.6f\n', D_f);
fprintf('\nNel blocco State-Space di Simulink:\n');
fprintf('  A: A_f\n  B: B_f\n  C: C_f\n  D: D_f\n');
fprintf('  Initial conditions: v_ref_init\n\n');

% Condizione iniziale del filtro: velocità iniziale del veicolo
v_ref_init = scenario.vehicle8.velstart;%qui si può cambiare se voglio renderla diversa
fprintf('v_ref_init = %.2f m/s  (= scenario.vehicle8.velstart)\n', v_ref_init);