Signum Function Matlab Homework Solution

  • Thread starter Thread starter SteliosVas
  • Start date Start date
  • Tags Tags
    Function Matlab
AI Thread Summary
The discussion focuses on using the signum function in MATLAB to process two vectors, x and y, where positive values are squared and negative values are replaced with the square root of their absolute values. Participants explore how to identify positive and negative values using logical indexing and how to perform operations on them. A key point is the need to combine results into a single output array for plotting, rather than maintaining separate arrays for positive and negative values. The conversation includes code snippets demonstrating the implementation of these operations and addresses the challenge of plotting vectors of different lengths. Overall, the thread provides insights into effectively using MATLAB for this specific mathematical operation.
SteliosVas
Messages
70
Reaction score
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...
 
Physics news on Phys.org
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?
 
SteliosVas said:
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
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
GoodPost said:
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?
 
Back
Top