Hello I'm getting this warning "Variable 'x1' might be set by a nonscaler operator".

조회 수: 3 (최근 30일)
This is a exercise to write a piece of code which would determine and plot the odd and even parts of a discontinuous time signal. It's not my code I just copied it from youtube. I would like to know why this code works just fine with continuous time signals and how can I rewrite the code to avoid this issue.
close; clear; clc;
n = -5:5;
A = 0.8;
x1 = A.^n;
x2 = A.^(-n);
if (x1 == x2)
disp('"The given signal is even!"')
elseif (x1 == (-x2))
disp('"the given signal is odd!"')
else
disp('"The given signal in nither odd nor even!"')
end
"The given signal in nither odd nor even!"
xe = ( x1 + x2 )/2;
xo = ( x1 - x2 )/2;
tiledlayout(2,2); nexttile;
stem(n,x1);
xlabel("n");
ylabel("x1(n)");
title("signal x(n)")
nexttile;
stem(n,x2);
xlabel("n");
ylabel("x2(n)");
title("signal x(-n)")
nexttile;
stem(n,xe);
xlabel("n");
ylabel("xe(n)");
title("Even Part of x(n)")
nexttile;
stem(n,xo);
xlabel("n");
ylabel("xo(n)");
title("Odd Part of x(n)")

채택된 답변

Chunru
Chunru 2022년 9월 20일
close; clear; clc;
n = -5:5;
A = 0.8;
x1 = A.^n;
x2 = A.^(-n);
if all(x1 == x2) % use all here to ensure all elements of x1 and x2 are same
disp('"The given signal is even!"')
elseif all(x1 == (-x2))
disp('"the given signal is odd!"')
else
disp('"The given signal in nither odd nor even!"')
end
"The given signal in nither odd nor even!"
xe = ( x1 + x2 )/2;
xo = ( x1 - x2 )/2;
tiledlayout(2,2); nexttile;
stem(n,x1);
xlabel("n");
ylabel("x1(n)");
title("signal x(n)")
nexttile;
stem(n,x2);
xlabel("n");
ylabel("x2(n)");
title("signal x(-n)")
nexttile;
stem(n,xe);
xlabel("n");
ylabel("xe(n)");
title("Even Part of x(n)")
nexttile;
stem(n,xo);
xlabel("n");
ylabel("xo(n)");
title("Odd Part of x(n)")

추가 답변 (1개)

KSSV
KSSV 2022년 9월 20일
You case x1, x2 are vectors and you cannot use the condition like that.
You have to use like shown below.
n = -5:5;
A = 0.8;
x1 = A.^n;
x2 = A.^(-n);
idx = x1 == x2 ;
[x1(idx)' x2(idx)']
[x1(~idx)' x2(~idx)']

카테고리

Help CenterFile Exchange에서 Signal Generation, Manipulation, and Analysis에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by