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

时间:2015-11-15 16:53:34

标签: matlab plot

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

trainData = load('training.csv')

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

count = @(x) (sum(trainData(:,2)==x));
fplot(count,[0,500]);

然而,这仅适用于某些限制,我无法弄清楚原因。如果限制未设置为“正确”,则count()始终返回零。

这是有效的,这意味着该图显示了一些值> 0:

  • fplot(count,[0,500]);
  • fplot(count,[100,600]);
  • fplot(count,[101, 601]);
  • fplot(count,[200,700]);
  • fplot(count,[50, 550]);

[0,500]的情节: 0 to 500

这不是,这意味着线条保持平坦,即使肯定有一些y>在此范围内的0(与之前的图相比):

  • fplot(count,[0,300]);
  • fplot(count,[200,450]);
  • fplot(count,[1,501]);

[200,450]的图,奇怪的是f(250)的值是1,其余的是0: 200 to 450

1 个答案:

答案 0 :(得分:1)

这种奇怪行为的原因是fplot从指定的x值范围中选择值的方法。默认情况下,步长不是1(我假设),fplot也不会在指定范围内使用所有可能的值(这可能是不可能的)。因此,我的方法没有找到csv中出现的所有值(它们都是整数)。因此,上面的“工作”示例可能只触及某些的出现值,而非工作示例仅仅是起始值([200,450]的图),而不是任何其他值。

简而言之,以下解决了这个问题:

fplot(count,[0,n], n);

它评估0n范围内每个整数的匿名函数。