how can i use my function directly on a array without having x and y?

2 views (last 30 days)
Rabih Sokhen
Rabih Sokhen on 14 Jan 2022
Commented: Rabih Sokhen on 18 Jan 2022
the code is:
function img(x,y,a)
imagesc(x,y,a);
set(gca,'YDir','normal');
impixelinfo;
end
command windows:
a=rand(2,3)
a =
0.5078 0.3828 0.7304
0.3943 0.8834 0.7662
>> img(a)
Not enough input arguments.
hello guys
i am trying to creat a small function similar to imagesc by adding more option to the original imagesc function,
however i can't use my img function to a array directly
exemple, if i try to do img(a) and a= rand(2,3) i will get a error "Not enough input arguments."
any idea how can i use my function directly on a array without having x and y?

Accepted Answer

DGM
DGM on 14 Jan 2022
You don't need to specify x and y when calling imagesc().
If you handle the input arguments like this:
A = imread('cameraman.tif');
img([0 1],[0 1],A)
img(A)
function img(varargin)
imagesc(varargin{:});
set(gca,'YDir','normal');
impixelinfo; % this should work fine, but won't show up in the web-figure
end
then you can call it either way.
  9 Comments
Rabih Sokhen
Rabih Sokhen on 18 Jan 2022
thank you a lot DGM !!, I really appreciate your help.
the code run perfeclty

Sign in to comment.

More Answers (1)

Max Heimann
Max Heimann on 14 Jan 2022
The function you defined has 3 arguments. x,y and a.
function img(x,y,a)
imagesc(x,y,a);
set(gca,'YDir','normal');
impixelinfo;
end
Yet you call it with just one argument "a".
a=rand(2,3)
a =
0.5078 0.3828 0.7304
0.3943 0.8834 0.7662
>> img(a)
The error message is pretty clear here. Where are the arguments x and y supposed to come from if you dont pass them as function arguments. Either somehow calculate the appropriate values in your function, hardcode them there or pass them as arguments.
  3 Comments

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!