I have this problem in matlab 2011a that I can not evaluate dirac function of higher order. In other words, the symbolic expression works well:
syms x; diff(dirac(x),x)
However, it can not evaluate dirac(x, 1) when x is double:
>> dirac(1, 1) ??? Error using ==> dirac Too many input arguments.
What should I do? Is there any code available ?
I can evaluate this in Maple but it is hard to believe that matlab doesn't prepared for this simple problem.
No products are associated with this question.
syms x; y=diff(dirac(x),x) subs(y,1)
The dirac function accepts only one argument (at least for earlier versions than yours) however, if you do not have the symbolic toolbox you can program your own function and put "1" in "0" instead of +infinity .
-First solution :
t=-10:0.001:10; y=dirac(t); figure, plot(t,y); dy=diff(y)./diff(t); figure, plot(t(1:end-1),dy,'r')
-Second solution :
function z=Dirac(t) N=length(t); z=zeros(size(t)); for n=1:N
if t(n)==0 z(n)=1; end end
Adjust this function for later use ....