>> a={'aaa','bbb','ccc'}

a =

    'aaa'    'bbb'    'ccc'

>> [rn, cm]=find(strcmp(a,'bbb'))

 

rn =

     1


cm =

     2

 

으로 나온다.

 

strcmp는 문자열 비교 함수로, 문자열을 비교해서 같으면 1을 내보냄.

블로그 이미지

TFPW

,

Electric field를 표현하는 방법에는 2가지 방법이 있습니다. 먼저, 잘알려진 전기장 구하는 식을 통해 전기장을 표현하는 방법과 전위를 계산해 Gradient를 구하는 방법 두가지 방법이 있습니다.

 

(Coulomb's law in vector form)

 1. 전기장을 직접 계산한다.

 프로그램을 짤땐 x성분 y성분 z성분 분리해서 계산합니다.

2. 전위를 계산해서 Gradient를 구한다.

 matlab안에는 자체의 gradient를 구하는 함수가 있기 때문에 쉽게 전기장을 구할 수 있습니다.

저는 1번방법을 사용해 전기장뿐만 아니라 전위까지 계산해보겠습니다.

가장 먼저 x-y plane 상에 전하를 배치 시킵니다. 먼저 전하를 array에 배치시키고 그 전하의 위치를 정의 해주기 위해  다음과 같이 x array와 y array를 만들었습니다. 그리고 +전하를 빨간색 -전하를 파란색으로 표현했습니다.

 

q(1)=10; q(2)=-10; q(3)=10; q(4)=-10; q(5)=10;
x(1)=1; x(2)=-1; x(3)=0; x(4)=0; x(5)=0;
y(1)=0; y(2)=0; y(3)=1; y(4)=-1; y(5)=0;

k=1; 
N=length(q);
for n=1:N
if q(n)>=0
    hold on
    plot(x(n),y(n),'og','Color','red')
else
    hold on
   plot(x(n),y(n),'og','Color','blue') 
end
end

(전하의 배치)

 

그 다음 전기장을 그리기 위해 전 단계로 meshgrid라는 함수를 사용합니다. meshgrid란 위치벡터를 정의하는 함수 입니다.

[xpos, ypos]=meshgrid(-4:1:4,-4:1:4)

이러한 함수를 적으면 1 간격으로 x범위 -3~3, y범위 -3~3 까지의 격자로 위치 백터를 정의 할 수 있습니다. x의 범위는 xpos에 담기게 되고 y의 범위는 ypos에 담기게 됩니다. xpos와 ypos의 이름은 마음대로 정할 수 있습니다.

 

(meshgrid의 표현)

이렇게 격자를 만들 수 있습니다. 위에서는 설명하기 편하게 1간격으로 격자를 그렸지만 더 세밀한 각격으로 표현하기 위해서 간격을 좁혀주셔도 됩니다. 나중에 보면 벡터 표현에 상당히 편한 함수인것을 알 수 있습니다.

이제 저는 2차원 평면에서 전기장을 표현하기 위해 전기장을 x성분과 y성분으로 분리 하겠습니다.

여기에서 alpha는 전하의 번호 입니다. 우리는 전하를 5개 놓았습니다.

 

xmin=-3;
xmax=3;
ymin=-3;
ymax=3;
[xPos yPos]=meshgrid(xmin:0.2:xmax,ymin:0.2:ymax);


scale=10;
ex=0; ey=0;
Ex=0; Ey=0;
v=0; v2=0;

for n=1:N;
    r=sqrt((x(n)-xPos).^2+(y(n)-yPos).^2);
    ex=-k*(q(n)./r.^2).*((x(n)-xPos)./r);
    Ex=Ex+ex;
    ey=-k*(q(n)./r.^2).*((y(n)-yPos)./r);
    Ey=Ey+ey;
    
    
    v=v-ex.*(r.*((x(n)-xPos)./r));
    v=v-ey.*(r.*((y(n)-yPos)./r));
end
image=figure(1);
hold on
contour(xPos,yPos,v);
hold on
ima=quiver(xPos,yPos,Ex*scale,Ey*scale,'Color','bLACK');

이렇게 하면 static electric field를 계산할 수 있습니다. 저는 덤으로 전위까지 계산했습니다.

 

(Static Electric Field)

 

'about My major > MATLAB' 카테고리의 다른 글

[MATLAB] cell에서 문자열 인덱스 찾기  (0) 2017.07.24
matlab 으로 고차 방정식 풀기  (0) 2015.10.02
블로그 이미지

TFPW

,

 matlab으로 고차방정식을 쉽게 풀 수 있다.

먼저 matlab으로 고차방정식을 푸려면 방정식의 변수지정을 해야하는데 syms라는 함수가 변수 지정하는 함수이다.

나는 W_c를 변수로 지정했다.

syms W_c

W_c^3+(Wci-Wce)*W_c^2-(Wpi^2+Wpe^2+Wci*Wce)*W_c+Wpi^2*Wce-Wpe^2*Wci=0



이라는 3차 방정식을 푸려고 한다.

Wpi,Wpe,Wce,Wci 모두 상수이다.

방정식을 풀땐 solve라는 함수를 이용한다.

 

ans로 식이 길게 나열된것이 방정식의 해이다. 참 신통방통!

블로그 이미지

TFPW

,