Matlab+cpp矩量法代码演示

article/2025/8/8 3:12:39

Matlab+cpp矩量法代码演示

  • 0前言
  • 1三维目标几何剖分与网格信息处理
  • 2阻抗矩阵计算
  • 3激励矩阵填充与表面电流求解
  • 4根据目标表面电流计算空间散射场及RCS
  • 5示例代码与说明

0前言

在上一篇博客中,我们详细介绍了矩量法(MoM)的原理及其数值求解过程。在这篇文章中,我们将以电场积分方程(EFIE)为例,介绍基于RWG函数的矩量法C++代码。
在正式解析代码之前,要先提一下关于矢量运算库函数的问题。
在求解EFIE方程的MoM方法中,涉及到了大量的矢量和矩阵运算过程,为了提高我们的编程效率,推荐选择一款成熟的矢量运算库。
这里,给大家推荐armadillo C++。这个运算库的使用方式非常类似Matlab,有matlab经验的人非常容易上手,我这里就不再过多介绍了。另外,我在个人网盘中上传了armadillo的配置和安装教程。感兴趣的朋友可以自行下载,链接如下:https://pan.baidu.com/s/1M0pZF_d56CNyhdF5mK9wZQ。

1三维目标几何剖分与网格信息处理

从上一张的介绍中不难发现,利用MoM求解EFIE,关键难点在于计算并填充阻抗矩阵方程。说白了,就是计算不同RWG函数之间基于电场积分算子联系起来的相互作用效应。那么问题来了,我们怎么将针对一个三维目标定义与其相对应的RWG函数呢?
根据RWG函数的定义,它的本质是依托一对三角面片的公共边定义的。因此,拿到一个三维目标,我们要做的第一步就是对其进行表面三角剖分,将其分解为一系列三角面片的组合。通常,这样的表面三角剖分工作依托一些现有的成熟工具(如FEKO、Ansys ICEM CFD)等就可以开展。
得到目标剖分后的三角面片网格信息之后,我们要对其进行一系列的处理,如定义三角面片编号、定义RWG函数等。这些工作是MoM求解的第一道难关。

2阻抗矩阵计算

阻抗矩阵元素的计算与填充是矩量法的核心,上一篇博客中有详细的说明,这里就不再详细说明了。需要补充说明的一点是,目标的阻抗矩阵主要决定因素就是目标的网格剖分信息。

3激励矩阵填充与表面电流求解

关于激励矩阵,实质上就是目标表面定义的RWG函数与入射波的相互作用,故而其除了与目标的网格剖分信息相关之外,还与入射波的方向、极化方式相关。另外,程序求解出的表面电流I实际上并不是目标的表面电流密度,它只是RWG函数的系数,两者合在一起才是严格意义上的表面电流密度。

4根据目标表面电流计算空间散射场及RCS

计算得到目标表面电流系数之后,就可以根据自由空间电流源的散射场公式计算目标在照射波条件下的空间散射场及其他电磁特征。这里,在计算目标空间散射场的过程中,采用的偶极子等效法,及目标表面的RWG函数等效成一系列电偶极子。具体的过程鉴于时间关系就不再这里详述,感兴趣的朋友可以参考论文:《综合函数矩量法理论及应用研究》。

5示例代码与说明

以下是利用Matlab编写的一段演示金属球体双站RCS计算的代码。代码主要分为三个部分:第一部分是利用Matlab生成一个半径为factor*lambda的金属球,并利用delaunayTriangulation函数对该金属球进行表面三角剖分,获取剖分网格信息;第二部分是设置照射波的参数(本例为一线极化平面波),并利用MoM计算金属球的双站RCS;第三部分是结果可视化。
第二部分关于MoM的代码是利用C++严格按照上一篇博客的思路编写的,这是一个通用的MoM程序,只需输入目标的三角剖分网格信息和对应的照射波参数即可直接计算目标的散射特性曲线。完整的源码已上传本站https://download.csdn.net/download/u014411646/12420361。

clc;clear all;close all;
f = 1e9;
c0 = 3e8;
lambda = c0/f;
step = lambda/10;
factor = 1.5;
%% sphere 创建目标三角剖分网格 
R = factor * lambda;
Jl = pi*R;
N_theta = round(Jl/step);
theta = 0 : pi/N_theta : pi;
X = []; Y = []; Z = [];
for n = 1 : length(theta)th = theta(n);if abs(th-0)<1e-4X(end+1) = 0; Y(end+1) = 0; Z(end+1) = R;elseif abs(th-pi)<1e-4X(end+1) = 0; Y(end+1) = 0; Z(end+1) = -R;elser = R*sin(th);Wl = 2*pi*r;if Wl <= 2*stepX(end+1) = r*cos(0); Y(end+1) = r*sin(0); Z(end+1) = R*cos(th);X(end+1) = r*cos(pi); Y(end+1) = r*sin(pi); Z(end+1) = R*cos(th);elseN_phi = round(Wl/step);phi = 0 : 2*pi/N_phi : 2*pi;for m = 1 : length(phi)X(end+1) = r*cos(phi(m)); Y(end+1) = r*sin(phi(m)); Z(end+1) = R*cos(th);endendend    
end
X = X(:); Y = Y(:); Z = Z(:);
DT = delaunayTriangulation(X,Y,Z);
[tdata,v] = convexHull(DT);
pdata = [X Y Z];
trisurf(tdata, X, Y, Z,'FaceAlpha',1.0);axis equal;box on;
xlabel('x'); ylabel('y'); zlabel('z');
p_whole = 'pdata_whole.txt';
t_whole = 'tdata_whole.txt';
save(p_whole,'pdata','-ascii');
save(t_whole,'tdata','-ascii');
%% MoM计算目标RCS
RCS_plane = 1;
dz = [-1.0 0.0 0.0];
Pol = [0.0 0.0 1.0];
fid = fopen('InputPara_MoM.txt','w');
fprintf(fid,p_whole);fprintf(fid,' ');fprintf(fid,t_whole);fprintf(fid,'\r\n');
fprintf(fid,'freq: ');fprintf(fid,num2str(f));fprintf(fid,'\r\n');
fprintf(fid,'RCS_plane: ');fprintf(fid,num2str(RCS_plane));fprintf(fid,'\r\n');
fprintf(fid,'dz: ');fprintf(fid,num2str(dz));fprintf(fid,'\r\n');
fprintf(fid,'Pol: ');fprintf(fid,num2str(Pol));fprintf(fid,'\r\n');
fclose(fid);
system('MoM_EFIE.exe');
%% 结果可视化
figure;
theta = -180:180;
rcs_mom = importdata('BiRCS_xoz_MoM.txt');
plot(theta,rcs_mom,'b');hold off;
grid on; xlabel('theta/deg');ylabel('BiRCS/dBsm');

利用上述程序,我们计算了金属球的双站RCS曲线,结果如下所示。利用Matlab生成的金属球及其表面三角剖分面片示意图
金属球三角剖分网格透视图
利用MoM计算得到的金属球双站RCS曲线


http://chatgpt.dhexx.cn/article/QgnapV6b.shtml

相关文章

迭代重心法 matlab,重心法

重心法(The centre-of-gravity method) [编辑] 什么叫重心法? 重心法(The centre-of-gravity method)是一种设置单个厂房或仓库的方法,这种方法主要考虑的因素是现有设施之间的距离和要运输的货物量,经常用于中间仓库或分销仓库的选择。商品运输量是影响商品运输费用的主要因…

电子技术基础(三)__电路分析基础__正弦交流电的相量表示法

通过前面的介绍&#xff0c; 回忆一下正弦量&#xff0c; 正弦量包括电压、电流、电动势。 一 正弦量的相量表示法 相量表示法是以复数运算为基础的。 为了与一般的复数相区别&#xff0c; 我们把表示正弦量的复数称为相量&#xff0c;并在大写字母上打 "." 以示…

向量与相量

在永磁同步电机中&#xff0c;存在许多有方向有大小的量&#xff0c;例如相电流、相电压、磁链&#xff1b;三相定子电流在空间中两两相隔120度分布&#xff0c;同时通入正弦交流电&#xff0c;所以此时相电流既有空间的影响&#xff0c;又有时间的影响。 并且在矢量合成相电流…

相量的加减乘除计算

相量的加减乘除计算 矢量是物理学中的术语&#xff0c;是指具有大小&#xff08;magnitude&#xff09;和方向的量。如速度、加速度、力等等就是这样的量。向量是数学中的术语&#xff0c;也称为欧几里得向量、几何向量、矢量。与向量对应的量叫做数量&#xff0c;在物理学中称…

【电路第八章】相量法

很多人不明白为什么要引入相量来表示电路&#xff1f;如果你把正弦的瞬间表达式代入四则运算你会发现是多么麻烦的三角计算&#xff01;但由于线性稳态电路定理&#xff0c;如果电路内的所有电源均为同一频率的正弦量&#xff0c;则电路任意部分的电压或电流也是同频率的正弦量…

相量法与稳态解

相量法与稳态解 简介一个例子另一个例子再来一个例子结论引用 简介 相信大家在学习《电路》这门课程的时候就遇到了神奇的相量法&#xff0c; 自1893年由德国人C.P.施泰因梅茨提出后&#xff0c;这种牛逼的方法就大 受欢迎。本来求解正弦稳态电路的稳态解的时候&#xff0c;需…

复数与相量法

1. 复数的几种表示形式 实部、虚部&#xff08;直角坐标系&#xff09;&#xff1a; &#xff08;a是实部&#xff0c;b是虚部&#xff09; 幅值、相角&#xff08;指数形式&#xff09;&#xff1a; &#xff08;r是幅值&#xff0c;θ 是相角 &#xff09; 两种…

交流电路计算方法:复阻抗和相量法

一&#xff0c;复阻抗 电容电路&#xff0c;电压与电流的大小比值是XC1/WC,相位上电流比电压超前90度 这样描述很麻烦&#xff0c;在复平面里&#xff0c;相位超前90度&#xff0c;可以用什么数学表示呢&#xff1f; 也就是说&#xff0c;一个相量&#xff0c;乘以j之后&#…

相量法解电路原理

转自&#xff1a;https://zhuanlan.zhihu.com/p/31415809 相关知识和思路 RLC电路 拿这张图来说事儿&#xff0c;有电容、电感、电阻 开始列KVL方程&#xff1a; 当电源 是一个正弦电源&#xff1a; 电流 为同频率的正弦量&#xff1a; 将电流带入&#xff08;1&#…

相量法(六)

文章目录 一、相量法二、复数复数的表示形式![在这里插入图片描述](https://img-blog.csdnimg.cn/9ad9162784ad4c748a8169c6480d3cdd.png)![ ](https://img-blog.csdnimg.cn/2f7a8439c065467c88c5681d7db9e4e0.png) 三、正弦量同频率正弦量的相位差正弦电流、电压的有效值 四、…

TongWeb安装

一、介绍 上次介绍了iServer 7c在TongWEB5.0中部署。最近发布的iServer 8c(2017)即&#xff0c;8.1.0beta版本&#xff0c;新增支持在TongWEB6.0中部署&#xff0c;与TongWEB5.0版本中的部署略有不同。这里不再介绍新特性等&#xff0c;可以自己查看相关文档。 二、TongWeb安装…

TongWeb控制台重置密码

问题现象 登录TongWeb控制台&#xff0c;提示密码错误 问题原因 TongWeb控制台密码忘记TongWeb的conf/security中的文件损坏 解决方法 重置TongWeb管理控制台密码 将TongWeb7.0/domain_template/conf/security目录覆盖到TongWeb7.0/conf cd /opt/TongWeb7.0/domain_templa…

Linux部署东方通TongWeb

Linux部署东方通TongWeb TongWeb一、软件版本二、东方通TongWeb7部署流程2.1 安装JDK2.1.1 下载文件2.1.2 查看当前JDK版本2.1.3 卸载JDK2.3.1 卸载JDK(需root权限) 2.1.4 验证卸载成功2.1.5 验证卸载失败2.1.6 上传安装文件2.1.7 解压安装文件2.1.8 配置环境变量 2.2 TongWeb安…

TongWeb8知识总结

TongWeb8知识总结 实例同步机制 集中管理的tw节点/domain1的console.xml中标签下的latestfalse代表实例不是最新。 同步是实例的内容不是最新的&#xff0c;才会同步&#xff0c;集中管理触发&#xff0c;每5分钟检测一次。 同步的时候&#xff0c;如果实例是启动的&#xf…

东方通tongweb部署服务(图文详细版)

文章目录 前言1.浏览器访问2.创建虚拟主机3.创建http通道4.部署应用5.查看日志 前言 部署过程不麻烦&#xff0c;就是配置文件端口号请认真确认&#xff0c; 直接进入主题吧&#xff0c;如果还不会安装Tongweb的小伙伴&#xff0c;请参考上一篇文章 https://blog.csdn.net/any…

linux 查看tongweb进程,TongWeb日志如何查看?

当使用TongWeb时出现问题,第一处理方式为查看TongWeb logs目录下的server.log。 注意:千万不要在控制台查看日志,排序不规则,浏览行数少,不如直接看server.log。 image image image 在出现问题时,首先要收集TongWeb日志server.log,收集规则: 若是必然出现的问题则清理一…

TongWeb7微服务适配方案

先介绍一下我们微服务项目的部署情况&#xff1a; 之前使用的是内置的Tomcat容器部署方式&#xff0c;运行项目使用的 java -jar 项目文件 方式&#xff0c;然后使用k8sdocker容器化部署。 还没了解TongWeb部署的同学们&#xff0c;可以看看我前面写的几个关于TongWeb本地部…

tongweb开启远程调试

远程调试 -Xrunjdwp:transportdt_socket,servery,suspendn,address"8097"

tongweb设置gzip

问题描述 前端js文件太大&#xff0c;网络传输非常慢。 解决办法 1.压缩传输&#xff08;配置Content-Encoding: gzip&#xff09; 2.VUE打包的时候压缩js文件 3.拆解js

tongweb使用之端口冲突处理办法

问题现象&#xff1a;tongweb服务启动时 提示&#xff1a;[SEVERE] [main] [core] [address already in use: 8005] 提示8005端口已经在用&#xff0c;此时我电脑上已经启动了tomcat tomcat的默认关闭端口就是8005。因此我们可以采用&#xff1a;关闭tomcat 、修改tomcat默认关…