我的問題如下:我從一個帶有x和y值的文本文件繪製了一個圖。圖本身是log(y/x)vs x。接下來,我定義了「bin number」和「bin width」,即我想將x軸分成幾個確定的寬度並獲得所有相應的y值。現在我被困在獲得一定範圍內的所有值 - 我只爲每個「容器寬度」獲得一個值。下面是一段代碼(C++ + ROOT) - 所以如果我打印vx [0],vy [0],我從文本文件中得到第一個條目,但我希望代碼首先檢查x值是在第一個bin(從0.3-0.9),如果是,打印所有相應的y值。然後檢查x值是否在第二個倉中(0.9-1.5)等等。任何建議如何做到這一點非常歡迎! :)獲取每個垃圾箱的所有y值
Float_t xmin = 0.3; //x-range starts at 0.3
Float_t xmax = 60.; //x-range ends at 60
const Int_t bins = 100; //the x range divided into 100 pieces
Float_t binW = (xmax-xmin)/(float)bins; // bin width ~0.6
Double_t xv[bins], yv[bins];
Double_t *xntuple = ntuple->GetVal(0); //1. column in txt file
Double_t *yntuple = ntuple->GetVal(1); //log(y/x)
Double_t xaxis, yaxis;
Float_t s = xmin;
for(Int_t i=0; i<bins; i++){
yaxis = yntuple[i];
yv[i] = yaxis;
xv[i] = s;
s += binW; //bin width ~0.6
}
cout << xv[0] << " and " << yv[0] << endl;
}
與您的問題和問題無關,但爲什麼自定義類型是別名「Float_t」和「Double_t」?實際的標準類型「float」和「double」有什麼問題? –
什麼是ntuple?哪些數據會產生不正確的答案?什麼纔是正確的答案?如果箱子是基於X軸的,爲什麼只使用Y軸?你怎麼只有兩個軸的函數,它需要兩個變量? –
不應將X和Y值保存在單獨的數組中,而應該像'struct Point {double x; double y; };'並將所有'Point'保存在'std :: vector'中。 –