• Support PF! Buy your school textbooks, materials and every day products Here!

Signum function Matlab

  • Thread starter SteliosVas
  • Start date
  • #1
70
0

Homework Statement



Okay basically we have two vectors x and y, and we are required to use the signum function to get the negative and positive ones and preform a operation on them. That is square the positive ones and square root of the absolute value of the negative ones.

x= [ 1:1:10]

y= [ 0.841 0.909 0.141 -0.756 -0.958 -0.279 0.656 0.989 0.412 -0.544]


Homework Equations



Signum function matlab

The Attempt at a Solution




I know if i do: sign(y) I will get values of 1 and -1 (zero possible but not in this case)

so for example -1 if the value is <0 and 1 if value > 0

The thing is since this is not a logical statement or I don't think so anyway, I don't know how i can utilize those 1's + and -, to preform an operation

I know if it was logical I could to say value(sign(y)) or use a if statement but not this instance it didn't work...
 

Answers and Replies

  • #2
70
0
x= [ 1:1:10];

y= [ 0.841 0.909 0.141 -0.756 -0.958 -0.279 0.656 0.989 0.412 -0.544];






positive = logical(sign(y)==1);

negative = logical(sign(y)==-1);

negative2=y(negative);

positive2=y(positive);

while negative2<0;

x2=sqrt(abs(negative2));

if positive2>0;

y2=positive2.^2;

break

end

end

%plot(x,y,x2,y2,'rs')

So I got this now.. but know I have to plot it on the samme plot as x,y how would I do that if vector lengths are different?
 
  • #3
DrClaude
Mentor
7,339
3,521
negative2=y(negative);

positive2=y(positive);

while negative2<0;

x2=sqrt(abs(negative2));

if positive2>0;

y2=positive2.^2;

break

end
My guess is that you are suppose to create a single array containing all the solutions, not two smaller arrays (one for each case) as you do above.
 
  • Like
Likes donpacino
  • #4
15
7
SteliosVas, take a look over this code, I hope that it helps a bit.

%clc
%clear all


x= 1:1:10;
y= [ 0.841 0.909 0.141 -0.756 -0.958 -0.279 0.656 0.989 0.412 -0.544]
Ytest = sign(y)
a = y.^2;
b = sqrt(abs(y));
Yout =b;
Yout(Ytest == 1 )= a(Ytest == 1)


plot( x, Yout, x, y)


Best regrads,
G.P.

 
  • Like
Likes SteliosVas
  • #5
70
0
Yout(Ytest == 1 )= a(Ytest == 1)

Is this simplifying what I had, in the sense it is putting the signum function into a logical statement?
 

Related Threads on Signum function Matlab

  • Last Post
Replies
5
Views
788
Replies
4
Views
12K
Replies
0
Views
5K
Replies
12
Views
989
Replies
1
Views
1K
Replies
5
Views
7K
  • Last Post
Replies
1
Views
1K
  • Last Post
Replies
10
Views
2K
Top