# CSTDataProcess **Repository Path**: tiflil/cst_data_process ## Basic Information - **Project Name**: CSTDataProcess - **Description**: 利用电磁仿真软件CST计算给定目标的后向散射RCS,得到的原始数据以txt的格式进行存储的,利用matlab对原始的txt数据进行解析,得到HRRP。 - **Primary Language**: Matlab - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-02-07 - **Last Updated**: 2023-02-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CSTDataLoader ## 介绍 利用CST电磁仿真软件对给定目标的宽带RCS进行计算,得到的计算结果将保存在txt文件中。`CSTDataLoader`类实现了从txt文本文件中解析数据的功能。 ## 设计思路 1. 一次从txt文件中读取各个观测角度下的宽带rcs,每个txt文件包含同极化和交叉极化。对于发射一组正交极化的情况,需要把两个txt文件中分别提取出来的宽带rcs数据合并。宽带rcs数据保存在一个3-D矩阵中,数据格式为:[采样点数,极化通道数,样本数]。 2. 利用read函数可以读取给定角度范围内的原始数据。 3. 利用save函数可以将给定角度范围内的处理后数据保存到目标文件夹下。 4. 利用plot函数可以对给定角度下数据处理后显示。 ## 属性 | 属性名 | 属性含义 | 数据类型 | | :---------: | :----------------: | :------: | | label | 数据的角度信息 | array | | src | txt文件路径 | str | | dst | 解析数据保存路径 | str | | sigma | 噪声功率值 | numeric | | DATA | 原始rcs数据 | array | | target_name | 仿真对象名 | str | | num_freq | 仿真频点数 | numeric | | batch_size | 一次解析的HRRP个数 | numeric | | save_mode | 数据保存模式 | str | | txt_name | 源文件名称 | struct | ## 方法 ### `CSTDataLoader` > class: obj = CSTDATALoader(src, dst, target_name, 'num_freq', 129 , 'batch_size', 1024, 'sigma', 0, 'nfft', 256, 'save_mode', 'all-in-one', 'win_type','rectwin', 'txt_name', struct("H",{"farfield_HP.txt"},"V",{"farfield_VP.txt"}) ) ----- 根据src位置的CST数据进行解析,并保存到dst件夹下,目标名称为target_name。 参数: - src(string) - txt文件所在路径 - dst(string) - 处理后数据保存路径 - target_name(string) - 目标名称 - num_freq(int) - 仿真带宽内离散频率点数,默认129; - batch_size(int) - 从txt文件中一次读取hrrp个数,默认1024; - sigma(float) - 高斯白噪声功率的均方根,默认0; - nfft(int) - ifft点数,默认256; - save_mode(string) - 保存模式,分为"all-in-one"和"seperate"两种,默认为"all-in-one"。在“all-in-one"模式下,所有HRRP保存为一个mat文件;在"seperate"模式下,每个HRRP保存为一个mat文件。 - win_type(string) - 加窗类型,默认为矩形窗"rectwin",可选"hanning", "hamming"等。 - txt_name(struct) - 需要读取的txt文件的名称。txt_name是一个结构体,默认形式如下 ```matlab txt_name = struct("H",{"farfield_HP.txt"},"V",{"farfield_VP.txt"}) ``` 其中H表示水平极化的仿真数据名,V表示垂直极化的仿真数据名。 ### `save` >func: save(obj, phi_range, theta_range, foldername) 将满足`phi_range`和`theta_range`的,保存到`foldername`文件夹下。foldername可选`train`, `test`和`validation`。如果`save_mode`为`seperate`,将符合要求的数据保存在`dst\foldername\target_name\*. mat`;如果`save_mode`为`all-in-one`,则保存至`dst\foldername\target_name.mat`文件。 **参数:** - `phi_range` 方位角度范围,是一个二维数组,当数据的方位观测角phi度满足 $$ phi\_range(1)\le phi \lt phi\_range(2) $$ 对应的数据将被提取出来。 - `theta_range` 俯仰角度方位,是一个二维数组,当数据的俯仰观测角theta度满足 $$ theta\_range(1)\le theta \lt theta\_range(2) $$ 对应的数据将被提取出来。 - `foldername` 数据保存文件夹名称,默认为空 ### `read` > func: [lb, data] = read(obj, phi_range, theta_range) 参数同save函数 ### `plot` > func: plot(obj, phi, theta) 参数同save函数。