function mSens = showSensingMatrix(opt,sigAC,probeNames,driveNames,dofNames,mDrv,readoutNames,mPrb) % Show and return sensing matrix using sigAC % opt: Optickle model % sigAC: result of tickle % probeNames: list of probe names to show % driveNames: list of drives of interest % dofNames: list of DOFs to show % mDrv: conversion matrix for drives to DOFs % readoutNames: list of readout names to show % mPrb: conversion matrix for probes to readout % You can omit probeNames,driveNames,dofNames,mDrv,readoutNames,mPrb (see example usage). % % Example usage: [fDC, sigDC, sigAC] = opt.tickle([], 10); % showSensingMatrix(opt,sigAC,{'REFL_I','REFL_Q'},{'ITMX','ITMY','BS','PRM'},{'MICH','PRCL'},[1,-1,0,0;0,0,0,1]) % partial sensing matrix in DOF basis % showSensingMatrix(opt,sigAC,{'REFL_I','REFL_Q'},{'ITMX','ITMY','BS','PRM'}) % partial sensing matrix in drive basis % showSensingMatrix(opt,sigAC) % whole sensing matrix % % Author: Yuta Michimura % Treat arguments try probeNames; catch probeNames={opt.probe.name}; % if not specified, show all the probes end try driveNames; catch driveNames=strrep(strrep(strrep(opt.getDriveNames, {'.pos'}, ''),{'.amp'},''),{'.phase'},'')'; % if not specified, show all the drives end try dofNames; catch dofNames=driveNames; % if not specified, use driveNames mDrv=eye(length(driveNames)); end try readoutNames; catch readoutNames=probeNames; %if not specified, use probeNames mPrb=eye(length(probeNames)); end % Main code starts here iDrv = cellfun(@opt.getDriveNum,driveNames); iPrb = cellfun(@opt.getProbeNum,probeNames); mSens = mPrb*sigAC(iPrb,iDrv); mSens = sign(real(mSens)).*abs(mSens)*pinv(mDrv); Ndof=length(dofNames); Nprb=length(readoutNames); max_probeName_len = max(cellfun(@length, readoutNames)); % how long is the longest probe name fprintf(repmat(' ',1,max_probeName_len+3)) for kk=1:Ndof fprintf(['%s ',repmat(' ',1,10-length(dofNames{kk}))],dofNames{kk}) end fprintf('\n') for ii=1:Nprb fprintf(['%s',repmat(' ',1,max_probeName_len-length(readoutNames{ii}))],readoutNames{ii}) for kk=1:Ndof fprintf(' %+1.2e',mSens(ii,kk)) end fprintf('\n') end fprintf('\n')