Function for Script. I need to write a Function that selects the positive and negative numbers from a matrix. How to write this?

 Respuesta aceptada

function [p,n]=splitsigns(x)
% return positive/negative values from array x in vectors p/n, respectively
p=x(x>0);
n=x(x<0);
This one excludes 0; pick where you want those if do...

7 comentarios

But, if I have a matrix with positive numbers and have to change it to negative and vice-versa?
Simple enough but need a better definition of what you need/want...
x=-x; % switch all signs
x=abs(x); % all negative are now positive
Many other choices as well, depending...
I'm new in Matlab... I'm doing exercices...
Thanks!
And if i switch the input and output values, like this:
function (x)=splitsigns(p,n)
x=p(p>=0)
x=n(x<0)
Then the second assignment overwrites the first and the result of the second yields an empty set, irregardless since you guaranteed no negatives are in x with the first.
Might as well as written
function (x)=splitsigns(p,n)
x=[];
which, overall, is pretty useless... :)
Ok! So, like you have writen in the first one, just to have no doubts in this.
I've the declaration of the function, with the: Output Arg (n,p) and the Input Arg (x)
And the Variables of the funtion are: p=x(x>0); n=x(x<0);
Am I thinking correctly?
Read the help files on functions, but in general yes. Other than I'd say that p=x(x>0); and n=x(x<0); are expressions, not variables. There are no strictly local variables in those functions, only the input/output arguments (which are, of course variables just not local).

Iniciar sesión para comentar.

Más respuestas (1)

a = 0.5 - rand(3,3);
%Positive numbers
a(a>=0)
% negative numbers
a(a>0)

1 comentario

Thank You!
But, if I have a matrix with positive numbers and have to change it to negative and vice-versa?

Iniciar sesión para comentar.

Categorías

Preguntada:

el 21 de En. de 2015

Comentada:

dpb
el 22 de En. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by