How to create Plot button for Complex vector?
38 views (last 30 days)
Paul Hoffrichter on 10 Jun 2022
I would like to be able to highlight a complex vector in the workspace and be able to click a button to plot complex vector the way the following function works:
PTRIn = @(x) plot(1:length(x), real(x), '-b', 1:length(x), imag(x),'--g');
If I highlight a variable in the Workspace, and hit the plot button, I do not get the desired plot. (Looks like imag vs real). If I hit the stem button, I get msg: "Warning: Using only the real component of complex data."
I have releases R2020a, R2021a, R2021b, and R2022a.
Jan on 13 Jun 2022
As far as I understand, all you need is to create a folder on your local disk and add it to Matlab's PATH:
addpath('D:\MyMFiles', '-end'); % Or use the PATHTOOL
Then store this file there:
plot(1:length(x), real(x), '-b', 1:length(x), imag(x),'--g');
Now you can type PTRIn(x) in the command window and in all other scripts and functions to call your function.
The functionname "PTRIn" sounds strange, but if you can remember it, everything is fine.
More Answers (1)
Steven Lord on 15 Jul 2022 at 13:30
I am fairly certain that it is not possible for users to register their own plotting functions for inclusion in the Plots Catalog on the Plots tab of the toolstrip.
If you have defined PTRIn as its own function then you can call it in the Command Window using any data that is in scope (so if you're stopped in the debugger, any data accessible to the function that you're debugging is fair game. I'm being intentionally vague or general here when I say "accessible".) If you have a hard and fast requirement that this be accessible via a button click, could you share why you have that requirement? Is it for accessibility, is it so you can keep keyboard focus in a particular window, is it because you're hoping to run this in an environment (like a deployed application) where the Command Window is not available, or is there some other reason?
Your eval based solution makes me a bit nervous, but if you really want to be able to click on a button you could create a favorite to run that code. To simulate you selecting the text 'x' in your code and copying it to the clipboard I'm using the clipboard function. You would then use eval in conjunction with clipboard('paste') to access the variable. Note that I am not responsible if you were to highlight, for example, some text that when evaluated closes MATLAB or does other nasty things.
x = 1:10;