how can I take the (x,y) coordinates of each point by having two different vectors for x and y respectively?
1 次查看(过去 30 天)
显示 更早的评论
Lets say that I have a matrix T=[1 2 1 2 3;1 2 4 1 2;0 2 1 3 4;2 1 0 3 1] I used the below code in order to have a plot
figure, axis([0 10 0 10]);
grid on; hold on;
[m,n] = size(T);
m = m*2 - 0.5;
n = n*2 - 0.5;
for i = 1:size(T,1)
I = (i-1)*2;
for j = 1:size(T,2)
J = (j-1)*2 + 0.5;
if(T(i,j)>0)
plot(J,m-I,'b.','MarkerFaceColor', 'b');
end
if(T(i,j)>1)
plot(J+1,m-I-1,'b.','MarkerFaceColor', 'b');
end
if(T(i,j)>2)
plot(J+1,m-I,'b.','MarkerFaceColor', 'b');
end
if(T(i,j)>3)
plot(J,m-I-1,'b.','MarkerFaceColor', 'b');
end
end
end
how can I take the (x,y) coordinates of each point from the plot by having two different vectors for x and y respectively?
0 个评论
采纳的回答
Guillaume
2015-7-28
With code like this you need to write a comment explaining what's going on: what the different values of T mean and how the point coordinates are calculated. You may know now what it is but when you revisit the code in a few months you'll have forgotten. And it helps anybody else understand what is going on.
One possible way to build your coordinate array:
[rows, cols] = size(T);
[basex, basey] = meshgrid(0.5:2:2*cols,rows*2-0.5:-2:0.5);
%when T > 0, use basex, basey
%when T > 1, also use basex+1, basey-1
%when T > 2, also use basex+1, basey
%when T > 3, also use basex, basey-1
x = [basex(T>0); basex(T>1)+1; basex(T>2)+1; basex(T>3)];
y = [basey(T>0); basey(T>1)-1; basey(T>2); basey(T>3)-1];
figure, axis([0 10 0 10]);
grid on; hold on;
plot(x, y, 'b.','MarkerFaceColor', 'b');
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!