-
Notifications
You must be signed in to change notification settings - Fork 0
/
upp3.m
62 lines (53 loc) · 2.56 KB
/
upp3.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
function [] = upp3()
fresnelvsfraun(100*10^-6, 632*10^-9);
end
function [] = fresnelvsfraun(b, lambda)
hFig = figure(1);%Säkerställer lämplig storlek
set(hFig, 'Position', [0 0 1100 900]); %Säkerställer lämplig storlek
subplot(2,2,1); %Plottar fšr 1m
doplot(b, lambda, 1, 0.10);
ylim([0,1]);
subplot(2,2,2); %Plottar fšr 10cm
doplot(b, lambda, 0.1, 0.005);
ylim([0,1]);
subplot(2,2,3);
doplot(b, lambda, 0.01, 0.0005); %Plottar fšr 1cm
ylim([0,1]);
subplot(2,2,4); %Plotta fšr 1mm
doplot(b, lambda, 0.001, 0.0005);
ylim([0, 0.1]); %Ignorera att visa en absoluta toppen ser inte
%andra intressanta saker dŒ
end
function [] = doplot(b,lambda,L, screenDim)
xlim =screenDim/2; %Ta fram fšr vilka x det Šr lŠmpligt
x = linspace(-xlim, xlim, 1000); %Generera intervall av x vŠrden
beta = ((pi*b)/lambda).*(x./L); %Ta fram beta
inten = (sin(beta)./beta).^2; %BerŠkna intensitetsvŠrden
plot(x.*100, inten, 'g'); %Plotta intensitet som funktion av x
%i enheten cm.
hold on
title(strcat(strcat('Intensitet fšr L = ', num2str(L)),' m'));
xlabel('AvstŒnd x (cm)');
ylabel('Intensitet');
doplot2(x, b, lambda, L);
legend('Intensitetsfšrdelning Fraun','Intensitetsfšrdelning Fresnel');
end
function [] = doplot2(x, b, lambda, L)
fresint = zeros(numel(x), 1); %Skapa plats fšr intensitet fšr varje x
for i = 1:numel(fresint) %Fšr varje x berŠkna intensiteten
fresint(i) = fresx(x(i), b, lambda, L);
end
plot(x.*100, fresint,'-.'); %Skala om till cm
end
function [intx] = fresx(x,b,lambda,L)
N = 10000; %Dela upp spalten i 10000
n = -N/2:1:N/2; %Skapa n
gangv = (L^2 + (x - n.*(b/N)).^2).^0.5; %Fšr varje segment berŠkna
%den optiska gŒgna vŠgen
psi = (gangv./lambda)*2*pi; %Omvandla optiska gŒngvŠgen tillfasförskutning
dx = cos(psi).*(1/N); %BerŠkna realdelarna fšr alla komplexa bidrag
dy = sin(psi).*(1/N); %BerŠkna imgdelarna fšr alla komplexa bidrag
dxsum = sum(dx); %Summera alla realdelar
dysum = sum(dy); %Summera alla imgdelar
intx = dxsum^2 + dysum^2; %Intensiteten fšr totalamp^2
end