Biot savart Matlab(找不到 MATLAB 论坛)



我想使用biot-savarts定律计算给定图像的磁场。例如,如果我有一个三角形的图片,我说这个三角形形成了一个携带电流的闭合导线。使用图像导数,我可以得到电流的坐标和方向(包括法线)。我正在努力实现这一点。。。逻辑方面也需要一些帮助。这是我所拥有的:

Img = imread('littletriangle.bmp');
Img = Img(:,:,1);
Img = double(Img);
[x,y] = size(Img);
[Ix, Iy] = gradient(Img);

biot-savart方程为:

b=mu/4*pi和(Idl x rn/r^2)

其中,μ/4pi是const,I是电流大小,rn是像素和电流之间的距离单位向量,r^2是像素和当前之间位移的平方大小。

首先,我读取图像,将其转换为二进制,然后获取图像梯度。这给了我"电流"的位置和方向。我现在需要根据图像中每个像素的"电流"来计算磁场。我只对得到x-y平面上的磁场感兴趣。任何能让我起步的东西都会很棒!

对于有线

B = mu * I /(2*pi*r)  

B是向量,具有。方向垂直于导线和兴趣点之间的直线。将矢量旋转90°的最快方法是交换(x.y),使其成为(y,x)矢量

电流怎么样?如果你处理的是电流,那么电流在电线内部是均匀的(可以是三角形),并且上方向的I只是每个点和整个I的归一化I。

那么如何做到这一点呢?

  1. 获取每个像素的电流(电流/形状中的像素数)
  2. 对于每个点,使用(由protagora计算的r)作为所有其他迷你线的总和来计算B,这些迷你线使用上方程表示为像素。(B是向量,也有方向,所以跟踪B为(x,y))

如果你不从空白处计算字段,那么拥有100*100的图片将产生B方程的(100*100)*(100*100)计算,或者更少。

B在末端,而不是所有导线的仅mu * I /(2*pi*r)和,并且I变为dI

您不需要应用任何导数,只需应用积分(和)

最新更新