Frage

Ich habe an einem Projekt gearbeitet, das invers Quellproblem im Bereich der elektromagnetischen Welle beinhaltet. Das Problem, das ich habe, ist das; Ich muss 3 Punkte in einem 2D -Raum definieren. Diese Punkte sollten natürlich AX, Y -Koordinate und einen Wert haben, der seinen Strom definiert. So was:

A1(2,3)=1
A2(2,-2)=2
and so on.

Außerdem muss ich einen Kreis um diesen Definieren und in 200 Punkte unterteilen. Wie der erste Punkt wäre; sagen R=2 ; B1(2,0) ;B50(0,2);B100(-2,0) usw.

Jetzt fällt es mir wirklich schwer, einen Raum in Matlab zu definieren und ihn zu kreisen. Ich bitte also, mir zu helfen, einen 2D -Raum zu definieren und es so zu tun, wie ich es beschrieben habe. Danke für irgendwelche Hilfe Jungs!

War es hilfreich?

Lösung

Diese Art von Code kann verwendet werden. Ansehen grid im variablen Editor.

grid = zeros(50, 50);
R = 10;
angles = (1:200)/2/pi;
x = cos(angles)*R;
y = sin(angles)*R;

center = [25 20];

for n=1:length(angles)   
    grid(center(1)+1+round(x(n)), center(2)+1+round(y(n))) = 1;
end

Sie müssen ein Gitter definieren, das groß genug für Ihr Bedürfnis ist.

Andere Tipps

Hier ist ein vollständiges Beispiel, das hilfreich sein könnte:

%# points
num = 3;
P = [2 3; 2 -2; -1 1];          %# 2D points coords
R = [2.5 3 3];                  %# radii of circles around points

%# compute circle points
theta = linspace(0,2*pi,20)';   %'
unitCircle = [cos(theta) sin(theta)];
C = zeros(numel(theta),2,num);
for i=1:num
    C(:,:,i) = bsxfun(@plus, R(i).*unitCircle, P(i,:));
end

%# prepare plot
xlims = [-6 6]; ylims = [-6 6];
line([xlims nan 0 0],[0 0 nan ylims], ...
    'LineWidth',2, 'Color',[.2 .2 .2])
axis square, grid on
set(gca, 'XLim',xlims, 'YLim',ylims, ...
    'XTick',xlims(1):xlims(2), 'YTick',xlims(1):xlims(2))
title('Cartesian Coordinate System')
xlabel('x-coords'), ylabel('y-coords')

hold on

%# plot centers
plot(P(:,1), P(:,2), ...
    'LineStyle','none', 'Marker','o', 'Color','m')
str = num2str((1:num)','A%d');    %'
text(P(:,1), P(:,2), , str, ...
    'HorizontalAlignment','left', 'VerticalAlignment','bottom')

%# plot circles
clr = lines(num);
h = zeros(num,1);
for i=1:num
    h(i) = plot(C(:,1,i), C(:,2,i), ...
        'LineStyle','-', 'Marker','.', 'Color',clr(i,:));
end
str = num2str((1:num)','Circle %d');    %'
legend(h, str, 'Location','SW')

hold off

screenshot

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top