## Two y axes in Maxima 2D plots

In MATLAB, I occasionally have need for the plotyy() command for making a plot of two different functions with widely varying scales.

Turns out Maxima draw has an equivalent functionality by setting the option yaxis_secondary:

Here’s the documentation.

## A pause() function for Maxima

In MATLAB, pause interrupts execution of a loop until the user strikes a key, and pause(<n>) pauses for <n> seconds before resuming execution.
Here’s my attempt at a pause() function for Maxima that works in a similar way to MATLAB.  It uses Maxima’s read() to stop everything and wait for user input, and it uses the lisp function sleep to stop for a fixed number of seconds.
**note that a lisp function
(function-name argument)
can be called inside Maxima as
?function-name(argument)
I’m not happy that in order to resume after the pause, the user needs to enter a valid character (space or nothing results in an error) followed by CTRL-SHIFT.  I hope to either figure something else out or even better hear suggestions from other Maxima users!
pause([options]):=block([tsecs],
tsecs:assoc('pausetime,options,0),
if tsecs=0 then
read("Execution Paused...enter any character then CTRL-ENTER")
else(
disp(sconcat("paused for ", tsecs," seconds")),
?sleep(tsecs)),
return("")
);
call this either as
pause();
or, for a three second pause
pause(pausetime=3);

## A Little Maxima Function to Find the Dimensions of a Matrix

**Update**  I didn’t find it it in documentation for quite a while, but there is a built-in Maxima function matrix_size()  in the package linearalgebra that does what this little one-liner does**

I really wanted a Maxima function that works something like MATLAB size() to easily determine the number of rows and columns for a matrix $M.$  In Maxima, length(M) gives the number of rows, and so length(transpose(M)) gives the number of columns.  I put those together in a little widget matsize() that returns the list [m,n] for an $m \times n$ matrix $M:$

matsize(A):=[length(A),length(transpose(A))];