0

1 :
(I)는 N * N 직교 격자를 생성하는 N를 사용하여 입력MATLAB 내가 원하는 무엇

[x y] = meshgrid(linspace(-1,1,n)); 

(II) 생성 극좌표

[theta r] = cart2pol(x,y); 

(III)는 푸 평가 원통형의 nction는

z = f(theta,r); 

(IV) 플롯 사용하여 결과를 좌표 (예를 들어) pcolor (또는 서핑, 또는 아무것도)

pcolor(x,y,abs(z).^2) %The function is complex, a Laguerre-Gauss to be exact. 

2. 나는 무엇을 할 수 있는지 ... 유일한을
는 (i)는
매개 변수

r=linspace(0,1,n); theta=linspace(0,2*pi,n); 
정의 : 나는 작업에 플롯을 얻을 수있는 방법은 내 극성 매개 변수와 함께 시작하고 거기에서 직교 다시 작업입니다 16,

(II) 모두 그리드를 작성하고 평가

[theta r]=meshgrid(theta,r); 
[x y]=pol2cart(theta,r); 
z=f(theta,r); 

(III) 플롯 F

pcolor(x,y,abs(z).^2) 

문제는 지금 내 격자 원형 점이다, 나는 평가하고 싶습니다 모든 기능은 사각형 격자를 사용합니다 (왜냐하면 내 분석은 정사각형 픽셀 배열을 사용하는 데 달려 있기 때문입니다). 위의 방법 2를 반복하면 사각형에 외접 된 원형 그림이 표시됩니다. 가장자리에 흰색이있는 검은 색 원을 상상해보십시오.하지만이 "흰색"영역에서 기능을 평가하고 싶습니다. 그러나 방법 1을 사용하면 작동하지 않습니다. - 음모를 꾸미면 기능이 엉망이됩니다 (Google Laguerre-Gauss 모드로 플롯이 어떻게 보이는지 확인하십시오).

나는 rect 격자로 시작하여 극좌표로 시작하는 대신 모든 점에 극좌표를 할당하고 모든 직교 점을 할당 할 수 있기를 원합니다.

저는 오래 동안이 문제에 얽혀 있었고,이 겉으로는 간단한 문제를 해결하는 방법을 알 수 없습니다.

편집 한
이 문제가 좌표 행렬 생성하는 방법에 있다고 보인다. 아래에서는 접근법 1과 접근법 2가 서로 다른 숫자를 생성하는 방법을 보여주는 간단한 3by3 예제의 스크린 샷을 게시했습니다.

이 번호를 호환 가능하게 만드는 방법은 무엇입니까?

나는 이미지를 직접 업로드 할 수 없으므로 명성을 얻지 못했습니다 ... 아래의 링크는 3by3 예제를 보여줍니다 ... 내가 작성하려고하는 Laguerre-Gauss 플롯의 실제 이미지에 대한 링크를 보려면 주석을보십시오 ...다음과 같이 현재 2

apply cart2pol
apply pol2cart

편집, 접근의 결과는 (1)는 잘못된 결과를 제공합니다 :

desired approach, wrong result

두 번째 접근법은 r ight 이미지, 불행히도 그것은 단지 원형이고 전체 사각형은 아닙니다. 그것은 여기에 표시됩니다 : 두 가지 접근 방식의

implemented approach, limited result

3D 플롯 here 표시됩니다 - 상단 그림의 화려한 부분은 올바른 것입니다.

편집 여기서 3

상기 사용되고있는 screenshot of the function f이다. 단지 r,theta보다 많은 입력 매개 변수를 요구합니다. 통상적 인 값은 다음과 같다 :

w0 = 0.5; 
p = 0; 
l = 5; 

함수 C는 정규화를 제공하고 L은 Laguerre 다항식이다. 이 두 기능 모두 철저한 테스트를 통해 예상되는 결과를 얻을 수 있습니다.

편집 여기에 4
명시 적으로 내 예를 z=U(0,5,r,phi,w0)+U(0,-5,r,phi,w0);을 실행하기에 충분한 코드입니다. 줄거리 자체는 pcolor(x,y,abs(z).^2)입니다.

Lpl() 함수가 주석으로 삽입되었습니다. U 함수가 제대로 실행되기 위해서는이 파일을 m- 파일로 저장해야합니다.

%% Laguerre-Gauss Modes U = U(p,l,r,phi,w0) 
% Source: OAM theory paper section 2.A eqn 1. 
% Assuming POLAR coordinates and evaluating AT beam waist. 
% -- That is, z=0 for w(z)=w0(sqrt(1+z/zR)) 
% ---- ie, w(0) = w0 
% Assuming z=0 also renders the Gouy phase arctan(z/zR) irrelevant. 
% Note: Rayleigh Range zR is not explicitly defined because z=0 --> it is irrelevant too. 
% Since zR is the only wavelength dependent term, wavelength also doesn't 
% matter. 

function out = U(p,l,r,phi,w0) 
%Function handles for clarity 
e = @(x) exp(x); 
C = @(p,l) sqrt((2*factorial(p))/(pi*factorial(p+abs(l)))); 
L = @(p,l,z) Lpl(p,l,z); 

%% Lpl() FUNCTION 
% function out = Lpl(p,l,z) 
% 
% l=abs(l); 
% LL=0; 
% for mm=1:p+1 
%  m=mm-1; 
%  L=LL; 
%  LL= L+((-1)^m)*(factorial(p+l)/(factorial(p-m)*factorial(l+m)*factorial(m)))*(z.^m); 
% end 
% out = LL; 

%% 

out = (C(p,l)/w0)*... 
    (((sqrt(2).*r)/w0)^abs(l))*... 
    (e((-r.^2)/w0^2))*... 
    (L(p,l,((2.*r.^2)/w0^2)))*... 
    (e((-1)*1i*l.*phi)); `` 
+0

숫자가 정확히 같지 않지만 반지름이 1 인 원은 각 방향으로 (-1,1)에 걸쳐있는 데카르트 격자로 쉽게 매핑되어야합니다. 내 눈에는 각 경우에 동일한 도메인 (본질적으로)을 통해 기능을 평가하고 있습니다. 분명히 이것은 사실이 아닙니다 ... 나는 내가 빠진 것을 보지 못합니다. – caseyalan

+0

도움을 주셔서 대단히 감사드립니다! – caseyalan

답변

1

편집
대답은 편집 질문 4에서 제공하는 코드에 따라 재 작성되었습니다.

문제는 U에서 발생한다고 생각합니다. 방정식의 모든 부분에 element wise operations을 적용하지 마십시오. 변경된 경우 :

out = (C(p,l)./w0).* ...    % here it's a .* instead of * 
    (((sqrt(2).*r)./w0).^abs(l)).* ... % here it's a .* instead of * 
    (e((-r.^2)./w0.^2)).* ...   % here it's a .* instead of * 
    (L(p,l,((2.*r.^2)./w0.^2))).* ... % here it's a .* instead of * 
    (e((-1)*1i*l.*phi)); 

다음과 같은 결과가 표시됩니다.

이 도면은 직교 좌표의 입력을 사용했을

enter image description here

및이 도면에는 극좌표 사용했을

enter image description here

번째 그림에서 "거친"해상도 기인을 그리드의 덜 적절한 해상도로.그러나 본질적으로 동일한 기능을 해결합니다.

+0

그게 전부 야! !!! 나는 약 30 조합에 대한 귀하의 솔루션을 테스트하고 모두 예상 결과를 제공합니다. 사실 요소 별 곱셈 **에 대한 기본 오류였습니다. – caseyalan

+0

THHHANNKKK YOUUUUUU !!! 내 여름 연구가 마침내 갈 수 있습니다. (이 기능이 기초이므로 - 말 그대로 - 내가하는 모든 일에 대해) :) – caseyalan

+0

나는 이것을 위해 최대한의 소품을 얻는 데 필요한 모든 일을하고 싶습니다. 내가 뭔가를 잊어 버리면 알려주지. – caseyalan

관련 문제