function mSens = plotSensingMatrixASC(opt,sigAC,probeNames, mPrb, cPrbNames, driveNames, mDrv, cDrvNames, noiseAC) % originally by Yoichi Aso % customized by Yuta Michimura %% try probeNames; catch probeNames=getProbeName(opt); mPrb = eye(length(probeNames)); cPrbNames=probeNames; end try driveNames; catch driveNames=getDriveNames(opt); mDrv = eye(length(driveNames)); cDrvNames=driveNames; end normNoise = 1; try noiseAC; catch normNoise = 0; end %% Complex sensing matrix iPrb=cellfun(@(x)getProbeNum(opt,x),probeNames); iDrv=getDriveNumbers(opt,driveNames); sigACr=sigAC(iPrb,iDrv); if normNoise noiseInv = diag(1./noiseAC(iPrb)); sigACr = noiseInv * sigACr; end mSens=sqrt(2/pi)*mPrb*sigACr*mDrv'; % sqrt(2/pi) needed for Optickle %% Plot ax=axes(); Nprb=length(cPrbNames); Ndrv=length(cDrvNames); %Make grid for ii=0:Nprb line([0,Ndrv],[ii,ii],'Color','k'); end for ii=0:Ndrv line([ii,ii],[0,Nprb],'Color','k'); end set(ax, 'XLim',[0,Ndrv],'YLim',[0,Nprb]); set(ax,'XTick',[0.5:Ndrv-0.5], 'YTick', [0.5:Nprb-0.5]); set(ax,'XTickLabel',cDrvNames,'YTickLabel',cPrbNames); for ii=1:Nprb [m,maxjj]=max(abs(mSens(ii,:))); if m~= 0 for jj=1:Ndrv text(jj-0.5,ii-0.5,num2str(abssign(mSens(ii,jj))/1e3, '%.2f'), 'HorizontalAlignment','center','color',[abs(mSens(ii,jj))/m,0,0]); % if ii==10 % text(jj-0.5,ii-0.5,num2str(abssign(mSens(ii,jj))/abssign(mSens(ii,ii+1)), '%.2f'), 'HorizontalAlignment','center','color',[abs(mSens(ii,jj))/m,0,0]); % else % text(jj-0.5,ii-0.5,num2str(abssign(mSens(ii,jj))/abssign(mSens(ii,ii)), '%.2f'), 'HorizontalAlignment','center','color',[abs(mSens(ii,jj))/m,0,0]); % end end end end % for ii=Nprb:Nprb % [m,maxjj]=max(abs(mSens(ii,:))); % if m~= 0 % for jj=1:Ndrv % text(jj-0.5,ii-0.5,num2str(abssign(mSens(ii,jj))/1e3*1e3, '%.2f'), 'HorizontalAlignment','center','color',[abs(mSens(ii,jj))/m,0,0]); % end % end % end % text(jj-0.5+0.6,ii-0.5,'$\times 10^{-3}$', 'interpreter', 'latex'); if normNoise title('Noise Normalized Sensing Matrix [1/m/sqrt(Hz)]','FontSize',16); else title('WFS Sensing Matrix [W/mrad]','FontSize',16); % title('Normalized WFS Sensing Matrix','FontSize',16); end set(gca,'XAxisLocation','top'); set(gca,'YDir','reverse'); function a=abssign(z) %abs with sign a=abs(z)*sign(real(z));