MATLAB求解接地金属槽内电位分布

2023-05-16

基于MATLAB有限差分法中的迭代法求解接地金属槽内电位分布

    • 要求
    • 有限差分法
    • MATLAB编写
    • 运行结果
    • 全部代码

要求

运用MATLAB求解接地金属槽内点位分布, 精度、行数M、列数N自己定义。

有限差分法

有限差分法是基于差分原理的一种数值计算法。其基本思想想是将场域离散成很多许多小的网格,应用差分原理,将求解连续函数的柏松方程问题转换为求解网格节点上的差分方程组问题。

有限差分法网格划分→在这里插入图片描述

拉普拉斯方程的五点差分格式:
在这里插入图片描述

可通过迭代法求解以上差分方程。

MATLAB编写

① 由高斯—赛德尔迭代法,将网格分成M*N列→

x=100;y=60;
v1=zeros(y,x);

先假设金属槽长为100,宽为60。 通过zeros()函数生成一个 x*y 的零矩阵


② 将金属槽顶端的值设置为5(V)→

for j=2:x-1
v1(y,j)=5;
end

金属槽顶端对应的矩阵坐标为 v1(60,2) ~ v1(60,99) , 通过for循环对顶端点进行一一赋值


③ 开始迭代→

v2=v1;m=1;t=0;k=0;
while(m>0.0000001)
k=k+1;     
m=0;
for i=2:y-1
for j=2:x-1;
v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;
t=(v2(i,j)-v1(i,j));  
if(t>m)m=t;end
end
end
v1=v2;
end

首先迭代开始之前将另一个数组 v2 赋值,用数组 v1 给其赋值,表示迭代之前的值,好用于后面精度的比较,定义变量 m 表示精度, 变量 t 表示点位实际差值,变量 k 表示迭代次数。

开始进行迭代时,根据公式将迭代方程编写输入即
v2( i , j )=(v1 ( i , j + 1 ) + v1 ( i+1 , j ) + v1 ( i - 1 , j ) + v1 ( i , j-1 )) / 4 。

每次迭代结束后将数组 v1 和数组 v2 对应的值进行比较,即是精度的计算。

如果误差大于所规定的误差0.0000001,将 v1 的值赋给 v2 ,然后继续进行迭代。

直到当迭代前后数值误差小于所规定的误差时停止迭代。


④ 绘制图像→

subplot(2,1,1),mesh(v1)  
axis([0,100,0,60,0,5])   %x,y,z 坐标范围
title('①金属槽电位三维网络图')
subplot(2,1,2),contour(v2,40)  %矩阵的等高线图
title('②金属槽等电位图')

axis([0,62,0,101,0,5]) 设置x,y,z 坐标范围
通过mesh() 函数绘制金属槽电位三维图;
通过contour() 函数获取 金属槽等电位图 ;“40”表示取40条等值线。
并加上图片标题。

运行结果

在MATLAB中将代码写好后,运行得到图像→

在这里插入图片描述

将三维网络图旋转,电位观察更直观

在这里插入图片描述

将光标放置在图像中,即可获取电位值。 (Z值 和 Level值 )
程序运行完后的 k 值即为迭代次数。

在这里插入图片描述



\

全部代码

在这里插入图片描述

x=100;y=60;
v1=zeros(y,x); %生成一个lx*ly的零矩阵
for j=2:x-1 %将金属块顶端设置为5V
v1(y,j)=5;
end
v2=v1;m=1;t=0;k=0;
while(m>0.0000001)
k=k+1; %迭代次数
m=0;
for i=2:y-1
for j=2:x-1;
v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;
t=(v2(i,j)-v1(i,j)); % v2 与 v1 偏差
if(t>m)m=t;end %精度比较
end
end
v1=v2;
end
k
subplot(2,1,1),mesh(v1) %网络图
axis([0,62,0,101,0,5]) %x,y,z 坐标范围
title(‘①金属槽电位三维网络图’)
subplot(2,1,2),contour(v2,40) %矩阵的等高线图
title(‘②金属槽等电位图’)








%designer:YUE
注:复制代码时可能会有中文报错,需将中文符号改成英文符号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB求解接地金属槽内电位分布 的相关文章

  • 如何将条形图的 XtickLabels 向左移动?

    我目前正在尝试创建频率直方图 为此 我必须创建一个条形图 条形图之间没有空格 然而 这集中于XTickLabels在酒吧的中间 由于它是一个直方图 我希望数值位于每个条形之间的线上 以便它可以直观地指示间隔 本质上 我需要将所有刻度标签移至
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • Matlab:掩码/创建一个知道其原点且具有一定半径的圆形 roi

    只是一个简单的问题 我有一张图像 并且提取了某个点 特征 我知道每个帧中该点的坐标 说 x1 和 y1 我需要一个圆形 ROI 形式 该点在图像上具有我选择的半径 我尝试了 impoly 和 roipoly 当我知道图像中的要点时 不知道如
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • MATLAB 滚动图

    我有一个脑电图数据库 我想绘制它 数据库是一个19 1000 134的矩阵 其中 19 是通道数 在第一种方法中 我只使用一个渠道 1000 个样本大小 采样率为 500 Hz 时为 1000 个点 即 2 秒数据 134 epochs的数
  • Matlab中转换数据类型的有效方法(double vs. im2double)

    我想将真彩色图像转换为双精度 据我所知有两种方法可以做到这一点 double rgb img im2double rgb img 哪一种效率更高 谢谢 他们都是不同的 im2double将图像的范围转换为0 1如果数据类型是uint8 or
  • MATLAB 中的多个捕获组

    我有一个包含数字或字母的字符串a 可能紧随其后的是r or l 在 MATLAB 中 以下正则表达式返回为 gt gt regexp 10r 0 9 a l r match ans 10r 我希望10 and r分开 因为我有两个捕获组 有
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 如何找到在matlab中重复的矩阵的每一行的索引?

    我想找到矩阵中所有有重复项的行的索引 例如 A 1 2 3 4 1 2 3 4 2 3 4 5 1 2 3 4 6 5 4 3 要返回的向量将是 1 2 4 很多类似的问题建议使用unique函数 我已经尝试过 但我能得到的最接近我想要的功
  • 如何在 Matlab 中对数组应用低通或高通滤波器?

    有没有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组 我对 MATLAB 的强大功能 或数学的复杂性 有点不知所措 需要一个简单的函数或一些指导 因为我无法从文档或网络搜索中找到答案 看着那 这filter http w
  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • 如何在没有安装Visual Studio的另一台机器上使用Visual Studio生成的dll?

    我已经在 Visual Studio 2012 中生成了动态库 我想在另一台机器上使用该库 但我不想在远程机器上安装 Visual Studio 我有 mex 库和 dll 我想运行一个使用这两个库的脚本 当我运行脚本时 出现以下错误 缺少
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • 有没有办法在matlab中进行隐式微分

    我经常使用 matlab 来帮助我解决数学问题 现在我正在寻找一种在 matlab 中进行隐式微分的方法 例如 我想区分y 3 sin x cos y exp x 0关于dy dx 我知道如何使用数学方法通常做到这一点 但我一直在努力寻找使
  • 我需要转义该 MATLAB 字符串中的字符吗?

    我想在 MATLAB 中调用以下 bash 命令 grep Up to test linux vision1 1 log awk print 7 I use system 在MATLAB中 但结果有错误 gt gt status strin
  • 黑白随机着色的六角格子

    我正在尝试绘制一个 10 000 x 10 000 随机半黑半白的六边形格子 我不知道如何将该格子的六边形随机填充为黑色和白色 这是我真正想要从这段代码中得到的示例 但我无法做到 https i stack imgur com RkdCw
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 给定协方差矩阵,在Matlab中生成高斯随机变量

    Given a M x M期望的协方差 R 以及所需数量的样本向量 N计算一个N x M高斯随机向量 X在普通 MATLAB 中 即不能使用r mvnrnd MU SIGMA cases 不太确定如何解决这个问题 通常你需要一个协方差并且意

随机推荐