How to correct the invalid expression error when i have the correct delimiters and multiplication operator?

8 views (last 30 days)
I am trying to run this code, but i am getting the invalid expression error for line 6. All parathensis are correct:
xz(t)=e^(j*pi*m(t));
xp(t)=pi*m(t);
xI(t)=cos(pi*m(t));
xQ(t)=sin(pi*m(t));
Ts=50;
t=(0:Ts:3);
m(t)=((t>=0)f(t<1)).*(-1+2*t)+((t>=1)f(t<2)).*(2-t);
Invalid expression. Check for missing multiplication operator, missing or unbalanced delimiters, or other syntax error. To construct matrices, use brackets instead of parentheses.

Error in connector.internal.fevalMatlab

Error in connector.internal.fevalJSON
plot(t,pi*m(t));q0xp(t);
plot(t,cos(pi*m(t)));qoxz(t);
plot(t,sin(pi*m(t)));qoxQ(t);

Answers (1)

Benjamin Kraus
Benjamin Kraus on 22 Feb 2022
This is an invalid MATLAB expression:
(t>=0)f(t<1)
Specifically, this is invalid:
(t>=0)f
It is unclear what you intend for MATLAB to do? Should MATLAB multiply a logical vector with the value of f? What is the value of f? If you want MATLAB to do an element-by-element multiplication of the value of (t>=0) with the value of f then you need this:
(t>=0).*f
And this may be invalid, depending on the value of f and t.
f(t<1)
In this case (t<1) will be a logical vector and f can either be a function or index. If f is a function, then you are calling that function with a logical vector. If f is a variable, then you will get an invalid index for any value that is less than 1, becase 0 is not a valid index for a MATLAB vector (which is 1-based).

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!