Assigning X-Y Coordinates to 2-D Matrix
Show older comments
Hello, I am trying to create a matrix like shown below and plot them like shown too. It is a simple 3x3 matrix and it contains X-Y coordinates of a point. I am trying to create this matrix with "for" loop but I cannot assign 2 values (x and y) to an element.
I will index the elements of the matrix for further work so I need these elements individually with their x-y coordinates.
I tried the code below but I know it is not true. Also the plot has some problems. Can you help me? Thanks.
close all
clear all
clc
Z = zeros(3,3)
for i=1:1:3
for j = 1:1:3
x = [0:100:200];
y = [200:-100:0];
A(i,j) = [x(i)];
B(i,j) = [y(j)];
Z = [A B];
plot(Z, '*');
end
end

Answers (1)
What I think you are trying to do is,
[x,y]=meshgrid([0,100,200],[200 100 0])
plot(x(:),y(:),'*'); axis padded
8 Comments
The OP wants to have
A(i,j) = [x(i),y(j)]
We had a long discussion that this is not possible for A being a usual numeric matrix.
Please convince him ...
If the desires is to have something like that, then one way would be.
[x,y]=meshgrid([0,100,200],[200 100 0]);
A=permute( cat(3,x,y) ,[1,3,2]);
A(1,:,2)
tinkyminky93
on 30 Mar 2022
Edited: tinkyminky93
on 30 Mar 2022
tinkyminky93
on 30 Mar 2022
Edited: tinkyminky93
on 30 Mar 2022
it does not created with for loop
Yes, it ihas already been explained to you in a previous thread that meshgrid or ndgrid are better for this than a for-loop. Also, you already have a for-loop that creates the x,y data (as separate matrices), so you clearly do not need help with that part of it if you really insist on using a for loop.
It seems like it is 3-D array
Yes. It has already been explained to you in a previous thread that you cannot have a 2D matrix consisting of non-scalar elements. So, I'm not sure why you would like to repeat that discussion.
I did not get the permute and cat part of your code also. I am not familiar with them.
Perhaps you should read the documentation about them.
tinkyminky93
on 31 Mar 2022
I believe I have done that already. You have asked for a way to access an individual x,y pair with the syntax A(i,j). By now, you will know that that is impossible, however, I showed you earlier that you can do so with essentially the same syntax A(i,:,j),
[x,y]=meshgrid([0,100,200],[200 100 0]);
A=permute( cat(3,x,y) ,[1,3,2]);
A(1,:,2)
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!