I'm happy with this blog, I received my first comment (here) this week, thank you Naza Sundae.

Following with our online Scilab's tutorial, let's learn how to make grids, like the figure:

This type of graphs are very important for data visualization.

The first step is to define each point.

Look the example:

(1, 5) - (2, 5) - (3, 5) - (4, 5) - (5, 5)

(1, 4) - (2, 4) - (3, 4) - (4, 4) - (5, 4)

(1, 3) - (2, 3) - (3, 3) - (4, 3) - (5, 3)

(1, 2) - (2, 2) - (3, 2) - (4, 2) - (5, 2)

(1, 1) - (2, 1) - (3, 1) - (4, 1) - (5, 1)

The x-coordinates are the matrix:

X = [1, 2, 3, 4, 5;

1, 2, 3, 4, 5;

1, 2, 3, 4, 5;

1, 2, 3, 4, 5;

1, 2, 3, 4, 5]

And the y-coordinates are the matrix:

Y = [5, 5, 5, 5, 5;

4, 4, 4, 4, 4;

3, 3, 3, 3, 3;

2, 2, 2, 2, 2;

1, 1, 1, 1, 1]

So, we can use the meshgrid function, like presented in the following script:

-->x = meshgrid(1:5)

x =

1. 2. 3. 4. 5.

1. 2. 3. 4. 5.

1. 2. 3. 4. 5.

1. 2. 3. 4. 5.

1. 2. 3. 4. 5.

-->y = meshgrid(5:-1:1)'

y =

5. 5. 5. 5. 5.

4. 4. 4. 4. 4.

3. 3. 3. 3. 3.

2. 2. 2. 2. 2.

1. 1. 1. 1. 1.

-->plot(x, y, 'k.-');

-->plot(x', y', 'k.-');

The result:

Now, I think it's interesting to upgrade our example.

Look the script:

-->t = 1:20;

-->x = meshgrid(t);

-->y = meshgrid(t($:-1:1))';

-->w = %pi/5;

-->s = sin(w*x);

-->plot(x, s + y, 'b.-');

-->plot(x', (s + y)', 'b.-');

The result:

Try to change the grid and look what happens.

## 5 comments:

Thank you for the post. I appreciate that people like you are out there publishing information. This helped me to learn scilab better. Also, props to using an open source OS +1

I agree with the last comment, cheers!

And in the topic of learning.

What does the "$" at the line:

--> y = meshgrid(t($:-1:1))';

Thanks in advance.

Dear Filipe, the '$' indicates the end of the vector 't'.

In this case, 't($:-1:1)' is the inverse of 't', look following:

t = [t(1) t(2) ... t($)]

t($:-1:1) = [t($) t($ - 1) ... t(1)]

You can use the '$' like a number, for example:

if length(t) = n then length(t($/2)) = n/2 (for 'n' is even)

Thanks for your comment.

Dear Sheep.

Following your examples, could you tell me please how to give additional attributes to each node of the grid? I mean, for example, how to give a pair of attributes of each node (its mass and its electric charge, for example). Thanks a lot.

Luis Ángel (México)

Hi Luis, this post presents how to make grids like graphs, each data point has only position information ({x,y} coordinates). But if you need to add more information, you could only create more components for each point.

For example:

x_coordinates = ones(100, 1)*(1:100);

y_coordinates = (ones(100, 1)*(100:-1:1))';

q_electric = rand(100, 100);

w_mass = 10*rand(100, 100);

data(:,:,1) = x_coordinates;

data(:,:,2) = y_coordinates;

data(:,:,3) = q_electric;

data(:,:,4) = w_mass;

In the example, each point data(x,y,:) has four attributes: x and y coordinates, electric charge and mass, and you can upgrade it as you want to.

Regards

Post a Comment