1 | % Initialisiere Variablen
|
2 | % Einstellungen
|
3 | % Feldgröße
|
4 | X_width = 200;
|
5 | % Simulationsgeschwindigkeit
|
6 | d_t = 0.01;
|
7 | % Verknüpfung rotE <- dB/dt
|
8 | k_rotE_dB = 1;
|
9 | % Verknüpfung rotB <- dE/dt
|
10 | k_rotB_dE = 1;
|
11 |
|
12 | buf_rotE = zeros(X_width,1);
|
13 | buf_rotB = zeros(X_width,1);
|
14 | buf_E = zeros(X_width,2); % X, alt/neu
|
15 | buf_B = zeros(X_width,2); % X, alt/neu
|
16 | i_alt = 1;
|
17 | i_neu = 2;
|
18 | gw_rotE = zeros(2, 1); % min/max
|
19 | gw_offset = 0;
|
20 | gw_skng = 0;
|
21 | X = 0;
|
22 | rain = 0;
|
23 |
|
24 | buf_rotE(X_width/2) = 250;
|
25 | % Führe Simulationsschritt durch
|
26 | for step = 1:50
|
27 | % buf_rotE(X_width/2) = 250*sin(step*0.4);
|
28 | figure(1);
|
29 | subplot(4,1,1);
|
30 | bar(buf_rotE);
|
31 | title(['step: ' num2str(step)]);
|
32 | axis([1 X_width -250 250]);
|
33 | subplot(4,1,3);
|
34 | bar(buf_rotB);
|
35 | axis([1 X_width -250 250]);
|
36 | title('rotB');
|
37 | pause(d_t);
|
38 | % Rotiere Array Index: alt <=> neu
|
39 | if i_alt==1
|
40 | i_alt = 2;
|
41 | i_neu = 1;
|
42 | else
|
43 | i_alt = 1;
|
44 | i_neu = 2;
|
45 | end
|
46 | % Berechne Felder und schreibe min/max Werte mit
|
47 | gw_rotE(1) = 0;
|
48 | gw_rotE(2) = 0;
|
49 | gw_B(1) = 0;
|
50 | gw_B(2) = 0;
|
51 | for X = 1:X_width
|
52 | % aktuelles E-Feld
|
53 | buf_E(X, i_neu) = 0;
|
54 | if X>=X_width
|
55 | buf_E(X, i_neu) = 0; %buf_rotE(X)-buf_rotE(X-1);
|
56 | elseif X==1
|
57 | buf_E(X, i_neu) = 0; %buf_rotE(X+1)-buf_rotE(X);
|
58 | else
|
59 | buf_E(X, i_neu) = buf_E(X, i_alt) + buf_rotE(X)-buf_rotE(X-1);
|
60 | buf_E(X, i_neu) = buf_rotE(X+1)-buf_rotE(X) + buf_E(X, i_neu);
|
61 | end
|
62 | % aktuelles B-Feld
|
63 | buf_B(X, i_neu) = 0;
|
64 | if X>=X_width
|
65 | buf_B(X, i_neu) = 0; %buf_rotB(X)-buf_rotB(X-1);
|
66 | elseif X==1
|
67 | buf_B(X, i_neu) = 0; %buf_rotB(X+1)-buf_rotB(X);
|
68 | else
|
69 | buf_B(X, i_neu) = buf_B(X, i_neu) + buf_rotB(X+1)-buf_rotB(X);
|
70 | buf_B(X, i_neu) = buf_rotB(X)-buf_rotB(X-1) + buf_B(X, i_neu);
|
71 | end
|
72 | end
|
73 | for X = 1:X_width
|
74 | % aktuelles E-Rotation
|
75 | buf_rotE(X) = ( buf_B(X, i_neu)-buf_B(X, i_alt) ) * k_rotE_dB;
|
76 | % schreibe min/max Werte mit
|
77 | if buf_rotE(X)<gw_rotE(1)
|
78 | gw_rotE(1) = buf_rotE(X);
|
79 | end
|
80 | if buf_rotE(X)>gw_rotE(2)
|
81 | gw_rotE(2) = buf_rotE(X);
|
82 | end
|
83 | % aktuelles B-Rotation
|
84 | buf_rotB(X) = ( buf_E(X, i_neu)-buf_E(X, i_alt) ) * k_rotB_dE;
|
85 | end
|
86 |
|
87 | subplot(4,1,2);
|
88 | bar(buf_E(:,i_neu));
|
89 | axis([1 X_width -250 250]);
|
90 | title('E');
|
91 | subplot(4,1,4);
|
92 | bar(buf_B(:,i_neu));
|
93 | axis([1 X_width -250 250]);
|
94 | title('B');
|
95 | hold off;
|
96 | % pause;
|
97 | end
|