Create a top hat function

Hello, Im trying to create a top hat function (that is 0 everywhere except between -halfpix & halfpix). the fucll width of the top hat (2* halfpix) is symetrical about the yaxis.
i've created it based in discrete values as below but I would like it as a general function.
x = -20:0.1:20;
t = zeros(1,length(x))
t(x>=-halfpix & x<halfpix) = 1;

 采纳的回答

Rik
Rik 2021-6-28

0 个投票

If you realize that you are marking all true locations with 1 and leaving all false as 0, you can use that to make an anonymous function that only casts you logical statement to double.

5 个评论

do you mean have an if statement in the anonymous functio, I didnt think this was possible
You don't even need an if, just double:
x=1:10;
double(x>5)
ans = 1×10
0 0 0 0 0 1 1 1 1 1
But thats if x>5, id also want if x<-5
You already know how to do that. You already used the code in your own question:
t=@(x) double(x>=-halfpix & x<halfpix)
Perfect, thankyou

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Introduction to Installation and Licensing 的更多信息

产品

版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by