SAR雷达Yamaguchi四分量分解MATLAB代码(注释部分为极化角优化)

function yamachuchi_matrix = yamaguchi(C)
%对于给定的C矩阵做yamaguchi分解,返回结果是个各个散射的能量是一个row X col X 4的矩阵
%P_s(单词散射),P_d(二面角),P_v(体散射),P_c(旋状体)
row=size(C.C11,1);
col=size(C.C11,2);
i=sqrt(-1);
yamachuchi_matrix = zeros(row,col,4);
for p=1:col
    for q=1:row
        TP = C.C11(q,p)+C.C22(q,p)+C.C33(q,p);
        P_c = 2*abs(imag((C.C12_real(q,p)+i*C.C12_imag(q,p)-conj(C.C23_real(q,p)+i*C.C23_imag(q,p)))/sqrt(2)));
        a = 10*log10(C.C33(q,p)/C.C11(q,p));

        %if a<-2
           % P_v = (15*C.C22(q,p))/4 - (15*P_c)/8;
           % tS = (C.C11(q,p)+C.C33(q,p)+2*C.C13_real(q,p)-P_v)/2;
           %tD = (C.C11(q,p)+C.C33(q,p)-2*C.C13_real(q,p))/2-(7*C.C22(q,p))/8-P_c/16;
           %tC = (C.C11(q,p)-C.C33(q,p)-(C.C13_real(q,p)+i*C.C13_imag(q,p))+(C.C13_real(q,p)-i*C.C13_imag(q,p)))/2-P_v/6;
        %elseif a<2
            P_v = 4*C.C22(q,p) - 2*P_c;
            tS = (C.C11(q,p)+C.C33(q,p)+2*C.C13_real(q,p))/2-2*C.C22(q,p)+P_c;
            tD = (C.C11(q,p)+C.C33(q,p)-2*C.C13_real(q,p))/2-C.C22(q,p);
            tC = (C.C11(q,p)-C.C33(q,p)-(C.C13_real(q,p)+i*C.C13_imag(q,p))+(C.C13_real(q,p)-i*C.C13_imag(q,p)))/2;
        %elseif a>2
            %P_v = (15*C.C22(q,p))/4 - (15*P_c)/8;
            %tS = (C.C11(q,p)+C.C33(q,p)+2*C.C13_real(q,p))/2-2*C.C22(q,p)+P_c;
            %tD = (C.C11(q,p)+C.C33(q,p)-2*C.C13_real(q,p))/2-C.C22(q,p);
            %tC = (C.C11(q,p)-C.C33(q,p)-(C.C13_real(q,p)+i*C.C13_imag(q,p))+(C.C13_real(q,p)-i*C.C13_imag(q,p)))/2;
        %end

        if (P_v+P_c)<TP
            C_0 = C.C13_real(q,p)+i*C.C13_imag(q,p)-C.C22(q,p)/2-P_c/2;
            if real(C_0)<0
                P_s = tS-((abs(tC))^2)/tD;
                P_d = tD+((abs(tC))^2)/tD;
            else
                P_s = tS+((abs(tC))^2)/tS;
                P_d = tD-((abs(tC))^2)/tS;
            end

            if (P_s>0)&&(P_d<0)
                P_d = 0;
                P_s = TP-P_v-P_c;
            elseif (P_s<0)&&(P_d>0)
                P_s = 0;
                P_d = TP-P_v-P_c;
            end

        else
            P_s = 0;
            P_d = 0;
            P_v = TP-P_c;
        end

        yamachuchi_matrix(q,p,1) = abs(P_s);
        yamachuchi_matrix(q,p,2) = abs(P_d);
        yamachuchi_matrix(q,p,3) = abs(P_v);
        yamachuchi_matrix(q,p,4) = abs(P_c);

    end
end

  

时间: 2024-11-10 11:32:44

SAR雷达Yamaguchi四分量分解MATLAB代码(注释部分为极化角优化)的相关文章

视觉slam十四讲ch6曲线拟合 代码注释(笔记版)

1 #include <opencv2/core/core.hpp> 2 #include <ceres/ceres.h> 3 #include <chrono> 4 5 using namespace std; 6 7 // 代价函数的计算模型 8 struct CURVE_FITTING_COST 9 { 10 CURVE_FITTING_COST ( double x, double y ) : _x ( x ), _y ( y ) {} 11 // 残差的计算

SAR成像学习(四)距离方向成像matlab代码解析 2

如果发射信号是线性调频信号,上一次讲的距离成像算法流程(匹配滤波方法)依然可以用,但那个流程要求T x =4X 0 c >T p  .如果T x <T p  ,即幅宽相对较小的情况,上一讲中的流程会带来一个问题,解决这个问题的办法是pulse compression.本文将会讨论这个puse compression的原理和实现. 1 what is pulse compression 对于线性调频信号:p(t)=a(t)exp(jβt+jαt 2 ) ,信号持续时间为T p  ,瞬时频率为β+

SAR成像学习(三)距离方向成像matlab代码解析 1

本文将结合matlab代码讲解SAR距离向成像问题. 本文只研究距离向,且是正侧视情况. 文中以同一方位向坐标上四个目标点的成像为例,这四个目标的关系如下: 目标的相关信息: % 关于目标 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Xc=2.e3; % Range distance to center of target area X0=50; % target area in range is within [Xc-X0,Xc+X0] ntarg

hog特征原理详解及matlab代码学习笔记

1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功.需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主. (1)主

【强连通分量分解】

摘自<挑战程序设计>4.3.1 [强连通分量分解原理] 对于一个有向图顶点的子集S,如果在S内任取两个顶点u和v,都能找到一条从u到v的路径,那么就称S是强连通的.如果在强连通的顶点集合S中加入其他任意顶点集合后,它都不再是强连通的,那么就称S是原图的一个强连通分量(SCC: Strongly Connected Component).任意有向图都可以分解成若干不相交的强连通分量,这就是强连通分量分解.把分解后的强连通分量缩成一个顶点,就得到了一个DAG(有向无环图). 强连通分量分解可以通过

Poisson image editing算法实现的Matlab代码解析

之前我发了数篇系列博文来仔细研究Poisson Image Editing算法,每次重新审视和深入,仿佛都能有更为深刻的认识和很大的收获.这应该算是我这个系列的完结篇,会用用Matlab代码一点一点的演示,原文作者到底是如何设计和实现他那个强大且影响深远的算法的.希望你在看本文之前务必参考一下文章来了解算法原理,本文将主要讲解编程实现的问题,对于前面讲过的内容,我不会深究.但我个人总体的感觉是,现在图像处理算法对数学的要求是越来越高了,像泊松融合.泊松抠图这样的算法如果没有偏微分方程(本算法中涉

DLL发布 matlab代码发布

https://blog.csdn.net/alansss/article/details/81320548 最近需要将写好的matlab代码转成基于OpenCV的代码,然后再封装成dll进行发布.一开始直接看基于OpenCV的dll生成,但是都不太成功,故而先试试没有OpenCV的dll生成. 主要参考了以下两个网页: VS2013生成dll及动态调用:https://blog.csdn.net/liu_matthew/article/details/55804710 vs 无法将参数 1 从

Latex 中插入 Matlab 代码

这篇文章将介绍如何在 Latex 排版过程中添加 Matlab 代码 功能效果 主要有如下排版功能: 语法高亮 自动添加边框 自动添加行号 先上图,大家感受一下效果 listings 包 首先确保你能使用使用 listings 包 简单快捷的使用方法如下 \usepackage{listings} \lstset{language=Matlab} \begin{lstlisting} % Plot function f(x) = 2*x^3 - x - 2 ezplot('2*x^3-x-2',

Latex中Matlab代码的环境

需要用到listings宏包 使用方法: 导言区\usepackage{listings}\lstset{language=Matlab}      %代码语言使用的是matlab\lstset{breaklines}                   %自动将长的代码行换行排版\lstset{extendedchars=false}  %解决代码跨页时,章节标题,页眉等汉字不显示的问题 正文区:\begin{lstlisting}此处写下Matlab代码 \end{lstlisting}