Neil
Neil

Reputation: 287

MATLAB: how to plot a matrix as an nxn table?

I have a routine that iteratively changes the structure of a matrix and I would like to animate the process, so that a user can actually see the structure changing.

If my matrix is nxn, I want to display the matrix as an nxn table

e.g.

enter image description here

Then using the 'plot' command I would like to have a figure containing:

enter image description here

(gridlines not necessary) My actual matrix could be 25x25 / 100x100

Upvotes: 0

Views: 1014

Answers (1)

Shawn
Shawn

Reputation: 583

This short piece of code

n = 25 ;
A = randi(100, n, n) ;

figure ;
xlim([0 n+2]) ;
ylim([0 n+2]) ;
axis off ;
tt = cell(n,n) ;

for i = 1:n
    for j = 1:n
        tt{i,j} = text(j,n-i,sprintf('%d',A(i,j))) ;
    end
end

for k = 1:100
    % Get random coordinates
    i = randi(n) ;
    j = randi(n) ;
    % Get random value
    v = randi(100) ;
    % Remove & update text
    delete(tt{i,j}) ;
    tt{i,j} = text(j,n-i,sprintf('%d',v)) ;
    % Force figure plot
    drawnow() ;
    % Wait a bit
    pause(0.02) ;
end

prints the matrix on a grid, without the lines. It then randomly finds coordinates and change their value. I'm not sure adding lines help clarity. If really needed, you can simply add them using plot.

You can adjust the sprintf so that it displays your data nicely. If number are all on top of each other, you can increase the size of the figure by simply dragging the corner of the window.

Upvotes: 1

Related Questions