我写了一个函数,它是泊松过程的开始
function n_t = PoisProc2(t,tao,SIZE)
n_t=0;
for n=1:SIZE
if t>tao(1,n)
n_t=n_t+1;
end
end
end
tao只是一个长度为SIZE的随机双精度数组。为简单起见,我们会说[1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20]
因此,这个函数的目的是计算t的t元素大于任何给定t的元素数。
当我编写
时,此代码可以正常工作PoisProc2(3,tao,20);
我得到的答案是预期的19,但是如果我写的话
x=1:.01:20;
y=PoisProc2(x,tao,20);
plot(x,y,'-')
y在工作区中显示为0(我希望数组的长度为1901),我的情节也会显示为0.我对Matlab很新,但这似乎是我想要做的一件非常简单的事情我必须遗漏一些明显的东西。请帮忙!
答案 0 :(得分:1)
您的代码无效,因为您正在提供矢量。所以你的if条件没有按预期工作。
首先用向量初始化n_t:
n_t=zeros(1,length(t))
而不是
if t>tao(1,n)
n_t=n_t+1;
end
对你的表达进行矢量化:
n_t = n_t + (t>tao(1,n))
干杯
答案 1 :(得分:0)
因为x是你上一个例子中的一个向量,你函数中的“if t> tao(1,n)”语句与你的想法完全不同。
以下此功能可为您提供正确的结果。
function ret = PoisProc2(thresholds, vec)
ret = zeros(size(thresholds));
for k = 1:numel(thresholds)
ret(k) = numel(nonzeros(vec > thresholds(k)));
end
附注: