Contents

function [iifR,T,iifL,F,rho] = IIF_stft(fs,signal,p)

Information Impulse Function (IIF) Using Short-time Fourier Transform:

The IIF detects and time-localize small disturbances in the response data of a nonlinear system. Relative information content is measured without using Boltzmann’s equation by modeling signal transmission as a series of dissipative steps. The resulting informational structure can be used to detect disturbances in the response signal. This implementation of the IIF uses the short-time Fourier transform (STFT), and is deal for signals of total length between 3000 and 5000 points.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                               INPUTS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%    fs      sample rate in Hz
%    signal  one dimensional array of response values
%    p       exponent defining the STFT window size (window_size = 2^p)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                               OUTPUTS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   iifR     one dimensional array of iifR values
%   T        one dimensional array of time values. Length matches the iifR
%   iifL     one dimensional array of iifL values
%   F        one dimensional array of frequency values. Length matches the
%                iifL
%   rho      rank of the decomposition
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                             REFERENCE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Additional details, derivations and case studies for the IIF can be found
% the full manuscript published in Entropy:
% A. Montoya,E. Habtour,F. Moreu, "Quantifying information without entropy:
% identifying intermittent disturbances in dynamical systems" (2020)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                             DISCLAIMER
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This work is part of the Advanced Simulation and Computing (ASC)
% initiative at Sandia National Laboratories. Sandia National Laboratories
% is a multi-mission laboratory managed and operated by National Technology
% and Engineering Solutions of Sandia, LLC, a wholly owned subsidiary of
% HoneywellInternational Inc., for the U.S. Department of Energy’s National
% Nuclear Security Administration under contract DE-NA0003525.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                           SOFTWARE ABOUT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% IIF_stft,  Version 1.0 | November, 2019
%
% Written for use with
%   MATLAB Version: 9.7.0.1190202 (R2019b)
%   Signal Processing Toolbox Version 8.3 (R2019b)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                               Author
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% A.C. Montoya
% Sandia National Laboratories
% Albuquerque, NM 87185, USA
% contact: acmont@sandia.gov
% Adjust inputs if needed
if ~iscolumn(signal)
    signal = signal';
end

% Decompose the signal
win  = hann(2^p,'periodic');
nfft = length(win)*2;
[W,F,T] = stft(signal,fs,'Window',win,'FFTLength',nfft);

% Determine the rank
rho = rank(W);

% Run the IIF
[iifR,iifL] = IIF_main(W,rho);
end

% IIF Main Engine
function [dR,dL] = IIF_main(W,rho)
% Calculate the SVD, ignore the singular values
[U0,~,V0] = svd(W);

% The sum of these is the diagonal of the identity matrix
% (V0*V0', and U0*U0',respectively)
U2 = real(U0).^2 + imag(U0).^2;
V2 = real(V0).^2 + imag(V0).^2;

% rank spacing
ds = 1/(rho*(rho+1));

% compute work(rank) and area under the curve up to rank rho:
dL = sum(cumsum(U2(:,1:rho),2),2).*ds;
dR = sum(cumsum(V2(:,1:rho),2),2).*ds;
end