How can I construct a triangle function, when I tested one using 'integral(fun.-pi,pi)', error occurred.

3 views (last 30 days)
function [a] = triangle(n)
a=zeros(size(n));
a(n>=0 & n<=pi)=pi-n;
end
--------------------
>> fun = @(x)triangle(x)
fun =
@(x)triangle(x)
>> integral(fun,-pi, pi)
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in triangle (line 3)
a(n>=0)=pi-n;
Error in @(x)triangle(x)
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
I used to define a step function like this and it works. Why did it not work this time?

Accepted Answer

VBBV
VBBV on 2 Mar 2023
Edited: VBBV on 2 Mar 2023
integral(@triangle,-pi,pi,'ArrayValued',1) % call function using function handle
ans = 0
function [a] = triangle(n)
a=zeros(size(n));
if a(n>=0 & n<=pi) % use an if else statement to execuete
a = pi-n;
else
a = 0; %n; % 0 otherwise
end
end
  2 Comments
Thamrongsin Siripongsakul
Thank you very much. I removed 'a' from the condition. Everthing works.
if (n>=0 & n<=pi) % use an if else statement to execuete
>> integral(fun,-pi,pi,'ArrayValued',1)
ans =
4.9348
Thamrongsin Siripongsakul
May I ask one more question?
Later I try to calculate a vector y = triangle(x). It doesn't work. The argument x is a vector.
x = -pi:0.01:pi;
The result is
y = 0
---------------------------------------------------------------------------------------------
function [a] = triangle(n)
a=zeros(size(n));
if (n>=0 & n<=pi) % use an if else statement to execuete
a = pi-n;
else
a = 0; %n; % 0 otherwise
end
end

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!