2011-10-18 3 views
0

J'ai travaillé sur un projet impliquant un problème de source inverse connu dans le domaine des ondes électromagnétiques. Le problème que j'ai est celui-là; Je dois définir 3 points dans un espace 2D. Ces points doivent avoir une coordonnée x, y bien sûr et une valeur qui définira son «courant». Comme ceci:Utilisation du système de coordonnées dans Matlab

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

Aussi je dois définir un cercle autour de ceci et le diviser en 200 points. Comme le premier point serait; dites R=2 ; B1(2,0) ;B50(0,2);B100(-2,0) et ainsi de suite.

Maintenant, j'ai vraiment du mal à définir un espace dans MATLAB et à l'entourer. Donc ce que je demande est de m'aider à définir un espace 2D et à le faire comme je l'ai décrit. Merci pour toute aide les gars!

Répondre

0

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 suffisamment grande pour votre besoin.

+0

Et pour voir si je l'ai fait juste comment puis-je le tracer? Est-ce que l'utilisation de la commande plot fonctionnerait? Quoi qu'il en soit c'était super merci merci. –

+0

Et la boucle For que vous avez incluse m'a troublé. Que fait-il exactement? Et comment puis-je définir une source par exemple S1 à la coordonnée 2,2 et avec une valeur de 3? –

+0

La variable 'center' contient les coordonnées de votre centre. Le '+ 1' est nécessaire car le tableau Matlab est basé sur 1. 'x' et' y' sont les points de votre cercle (200 points sur le cercle trigonométrique). Si vous voulez simplement faire une vérification, une solution consiste à copier-coller le tableau dans une feuille de calcul (Excel par exemple). –

0

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 

screenshot

Questions connexes