Utilisation du système de coordonnées dans Matlab
-
26-10-2019 - |
Question
Je travaille sur un projet impliquant problème source inverse connue dans le domaine des ondes électromagnétiques. Le problème est que j'ai; Je dois définir 3 points dans un espace 2D. Ces points devraient avoir une coordonnée x, y et bien sûr une valeur qui définira son courant. Comme ceci:
A1(2,3)=1
A2(2,-2)=2
and so on.
Aussi je dois définir un cercle autour de cela et de le diviser en 200 points. Tout comme le premier point serait; dire R=2 ; B1(2,0) ;B50(0,2);B100(-2,0)
et ainsi de suite.
Maintenant, je suis vraiment un moment difficile de définir un espace dans Matlab et encercler. Donc ce que je vous demande est de me aider à définir un espace 2D et le faire comme je l'ai décrit la manière. Merci pour toute aide les gars!
La solution
Ce type de code peut être utilisé. Regardez grid
dans l'éditeur de variables.
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
Vous devez définir une grille assez grande pour vos besoins.
Autres conseils
Voici un exemple complet qui pourrait être utile:
%# 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