Asked by Nafila Farheen
on 15 Nov 2019 at 15:22

Hi, I am writing a code that uses too many else if conditions.I am wondering is there an easy way to that.

function y=gain(x)

for jj=1:4

p(jj)=1-jj/128;

end

if x==1

y=p(1);

elseif x==2

y=p(2)

elseif x==3

y=p(3);

elseif x==4

y=p(4);

else y==1;

end

Answer by ME
on 15 Nov 2019 at 15:31

function y=gain(x)

for jj=1:4

p(jj)=1-jj/128;

end

if x<=4

y=p(x);

else

y=1;

end

end

I have assumed here that your final y==1 was supposed to assign y=1 if x is anything else that 1-4. If that is incorrect then just adjust that last part.

Sign in to comment.

Answer by Steven Lord
on 15 Nov 2019 at 15:57

The approaches suggested by Bob Nbob and ME each work if the only values x can take in the range [1, 4] are integer values. If it can take values like 2.5 or pi, I'd use ismember.

% Sample data

x = [1, 2, 2.5 pi, 4, 42]

p = x.^2 + x

% Locate values of x that are 1, 2, 3, or 4

M = ismember(x, 1:4)

% Start y off with the default value of 1 and the right size (the same size as x)

y = ones(size(x))

% Fill in the elements of y where x is 1, 2, 3, or 4 with the right elements of p

y(M) = p(M)

% Let's do something with the other elements too to illustrate the technique

y(~M) = x(~M)

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.