Matlab fplot:如果限制不在特定范围内,则匿名函数仅返回零

Matlab fplot:如果限制不在特定范围内,则匿名函数仅返回零,matlab,plot,Matlab,Plot,我有一个csv文件,其中一些整数存储在三列中 trainData=load('training.csv') 我想计算一定范围内某个值的出现次数,并绘制结果 count = @(x) (sum(trainData(:,2)==x)); fplot(count,[0,500]); 然而,这只适用于某些限制,我不明白为什么。如果限制未设置为“正确”,则count()始终返回零 这起作用,意味着绘图显示一些大于0的值: fplot(计数,[0500]) fplot(计数,[100600]) fplo

我有一个csv文件,其中一些整数存储在三列中

trainData=load('training.csv')

我想计算一定范围内某个值的出现次数,并绘制结果

count = @(x) (sum(trainData(:,2)==x));
fplot(count,[0,500]);
然而,这只适用于某些限制,我不明白为什么。如果限制未设置为“正确”,则
count()
始终返回零

这起作用,意味着绘图显示一些大于0的值:

  • fplot(计数,[0500])
  • fplot(计数,[100600])
  • fplot(计数,[101601])
  • fplot(计数[200700])
  • fplot(计数,[50550])
[0500]的绘图:

但事实并非如此,这意味着该线保持平坦,即使该范围内肯定存在y>0(与上一个绘图相比):

  • fplot(计数,[0300])
  • fplot(计数,[200450])
  • fplot(计数[1501])
[200450]的图,奇怪的是f(250)的值是1,其余的是0:
这种奇怪行为的原因是
fplot
从指定的x值范围中选取值的方式。默认情况下,步长不是1(我假设),也不是
fplot
使用指定范围内的所有可能值(这可能是不可能的)。因此,我的方法没有找到csv中出现的所有值(它们都是整数)。因此,上面的“工作”示例可能只命中了一些发生的值,而非工作示例仅命中了起始值(图[200450]),而没有命中任何其他值

简单地说,以下解决了问题:

fplot(计数,[0,n],n)

它为
0
n
范围内的每个整数计算匿名函数