2015-11-15 18 views
1

我有一個CSV文件存儲在三列fplot:匿名函數只返回零,如果限制未在特定的範圍內

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]);

的曲線[0500]: 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

這樣做的原因奇怪的行爲是從x值的指定範圍採摘值fplot的方式。默認情況下,步長不是1(我認爲),fplot也不使用全部指定範圍內的可能值(這可能是不可能的)。因此我的方法沒有找到在csv中發生的所有值(它們都是整數)。因此,上面的「工作」例子可能僅僅發生了的一些的發生值,而非工作例子僅僅是起始值([200,450]的曲線圖),但沒有其他任何例子。

簡而言之,以下解決了這個問題:

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

它評估爲在範圍0每個整數n匿名函數。