fig = 1
    fig = FreqTrans.PlotSigma(freqLin_hz, svLoLinNomMin_mag, np.ones_like(freqLin_hz), svLoLinUncMax_mag, fig = fig, color = 'k', label = 'Linear')
    fig = FreqTrans.PlotSigma(freq_hz[0], svLoEstNomMin_mag, cohLoEstMin, svLoEstUncMax_mag, marker='.', color = 'b', fig = fig, label = 'Estimate (MIMO)')
    fig = FreqTrans.PlotSigma(freqLin_hz, (0.4) * np.ones_like(freqLin_hz), linestyle = '--', color = 'r', fig = fig, label = 'Critical Limit')
    
    ax = fig.get_axes()
    handles, labels = ax[0].get_legend_handles_labels()
    handles = [handles[0], handles[3], handles[1], handles[4], handles[2]]
    labels = [labels[0], labels[3], labels[1], labels[4], labels[2]]
    ax[0].legend(handles, labels)
    
    fig.suptitle('$L_o$ : ' + '$r_{Exc}$' + ' to ' + '$z$')


#%% Vector Margin Plots - Output Stability
vmLoLinNom_mag, vmLoLinUnc_mag, vmLoLinMin_mag = FreqTrans.VectorMargin(LoLinNom, LoLinUnc, typeUnc = 'circle')
vmLoEstNom_mag, vmLoEstUnc_mag, vmLoEstMin_mag = FreqTrans.VectorMargin(LoEstNom, LoEstUnc, typeUnc = 'circle')

numOut, numIn = LoLinNom.shape[0:-1]
ioArray = np.array(np.meshgrid(np.arange(numOut), np.arange(numIn))).T.reshape(-1, 2)

if True:
    for iPlot, [iOut, iIn] in enumerate(ioArray):
        fig = 30 + iPlot
        fig = FreqTrans.PlotVectorMargin(freqLin_hz, vmLoLinNom_mag[iOut, iIn], cohLoLin_mag[iOut, iIn], vmLoLinUnc_mag[iOut, iIn], fig = fig, linestyle='-', color='k', label='Linear Model')
        fig = FreqTrans.PlotVectorMargin(freq_hz[iIn], vmLoEstNom_mag[iOut, iIn], cohLoEst_mag[iOut, iIn], vmLoEstUnc_mag[iOut, iIn], fig = fig, linestyle='-', marker='.', color='b', label='Estimate [MIMO]')
        fig = FreqTrans.PlotVectorMargin(freq_hz[iIn, sigIndx[iIn]], vmLoEstNom_mag[iOut, iIn, sigIndx[iIn]], cohLoEst_mag[iOut, iIn, sigIndx[iIn]], vmLoEstUnc_mag[iOut, iIn, sigIndx[iIn]], fig = fig, linestyle='None', marker='.', color='g', label='Estimate [SIMO]')
        
        ax = fig.get_axes()
        handles, labels = ax[0].get_legend_handles_labels()
        handles = [handles[0], handles[3], handles[1], handles[4], handles[2], handles[5]]
Esempio n. 2
0
    fig = FreqTrans.PlotSigma(freqLin_hz, (0.4) * np.ones_like(freqLin_hz),
                              linestyle='--',
                              color='r',
                              fig=fig,
                              label='Critical Limit')

    ax = fig.get_axes()
    handles, labels = ax[0].get_legend_handles_labels()
    handles = [handles[0], handles[3], handles[1], handles[4], handles[2]]
    labels = [labels[0], labels[3], labels[1], labels[4], labels[2]]
    ax[0].legend(handles, labels)

    fig.suptitle('$L_i$ : ' + '$u_{Exc}$' + ' to ' + '$u$')

#%% Vector Margin Plots
rCritLiLinNom_mag, rCritLiLinUnc_mag, rCritLiLinMin_mag = FreqTrans.VectorMargin(
    LiLinNom, LiLinUnc, typeUnc='circle')
rCritLiEstNom_mag, rCritLiEstUnc_mag, rCritLiEstMin_mag = FreqTrans.VectorMargin(
    LiEstNom, LiEstUnc, typeUnc='circle')

rCritLiEstSamp_mag, _, _ = FreqTrans.VectorMargin(LiEstSamp, typeUnc='circle')

rCritLiEstCrit_mag, _, _ = FreqTrans.VectorMargin(LiEstCrit, typeUnc='circle')

if True:
    numOut, numIn = LiLinNom.shape[0:-1]
    ioArray = np.array(np.meshgrid(np.arange(numOut),
                                   np.arange(numIn))).T.reshape(-1, 2)

    for iPlot, io in enumerate(ioArray):
        [iOut, iIn] = io
    fig = 10
    fig = FreqTrans.PlotSigma(freqLin_hz, svTLinNomMin_mag, svUnc_mag = svTLinUncMax_mag, coher_nd = cohTLinMin, fig = fig, color = 'k', label = 'Linear')
    fig = FreqTrans.PlotSigma(freq_hz[0], svTEstNomMin_mag, svUnc_mag = svTEstUncMax_mag, coher_nd = cohTEstMin, marker='.', color = 'r', fig = fig, label = 'Estimate (MIMO)')

    for iSamp in range(nSamp):
      fig = FreqTrans.PlotSigma(freq_hz[0], svTEstSampMin_mag[..., iSamp], svUnc_mag = None, coher_nd = None, marker='.', color = 'gray', linestyle='None', fig = fig, label = 'Sampled (MIMO)')

    ax = fig.get_axes()
    handles, labels = ax[0].get_legend_handles_labels()
    handles = [handles[0], handles[2], handles[1], handles[3]]
    labels = [labels[0], labels[2], labels[1], labels[3]]
    ax[0].legend(handles, labels)


#%% Vector Margin Plots
vmTLinNom_mag, vmTLinUnc_mag, vmTLinMin_mag = FreqTrans.VectorMargin(TLinNom, TLinUnc, typeUnc = 'circle')
vmTEstNom_mag, vmTEstUnc_mag, vmTEstMin_mag = FreqTrans.VectorMargin(TEstNom, TEstUnc, typeUnc = 'circle')

# Sampled Systems
vmTEstSamp_mag = np.zeros((numOut, numIn, nFreq, nSamp), dtype='float')
for iSamp in range(nSamp):
  vmTEstSamp_mag[..., iSamp], _, _ = FreqTrans.VectorMargin(TEstSamp[..., iSamp], typeUnc = 'circle')


numOut, numIn = TLinNom.shape[0:-1]
ioArray = np.array(np.meshgrid(np.arange(numOut), np.arange(numIn))).T.reshape(-1, 2)

if True:
    for iPlot, [iOut, iIn] in enumerate(ioArray):
        fig = None
        fig = FreqTrans.PlotVectorMargin(freqLin_hz, vmTLinNom_mag[iOut, iIn], cohTLin_mag[iOut, iIn], vmTLinUnc_mag[iOut, iIn], fig = fig, linestyle='-', color='k', label='Linear Model')
    ax = fig.get_axes()
    ax[0].set_xlim(0, 10)
    ax[0].set_ylim(0, 1)

#%% Vector Margin Plots
inPlot = ['$p_{ex}$', '$q_{ex}$', '$r_{ex}$']  # Elements of sigExcList
outPlot = ['$p_{fb}$', '$q_{fb}$', '$r_{fb}$']  # Elements of sigFbList

vmLaEstNomList_mag = []
vmLaEstUncList_mag = []

for iSeg in range(0, len(oDataSegs)):

    vm_mag, vmUnc_mag, vmMin_mag = FreqTrans.VectorMargin(LaEstNomList[iSeg],
                                                          LaEstUncList[iSeg],
                                                          typeUnc='circle')

    vmLaEstNomList_mag.append(vm_mag)
    vmLaEstUncList_mag.append(vmUnc_mag)
    # vm_mag.append(vmMin_mag)

numOut = len(outPlot)
numIn = len(inPlot)
ioArray = np.array(np.meshgrid(np.arange(numOut),
                               np.arange(numIn))).T.reshape(-1, 2)

if False:
    for iPlot, [iOut, iIn] in enumerate(ioArray):
        fig = 10 + iPlot
        for iSeg in range(0, len(oDataSegs)):