यह इस सवाल का सटीक उत्तर नहीं है, लेकिन जब से मैं यहाँ किसी खोज के आधार पहुंचे, मैं कैसे बनाने के लिए से संबंधित सवाल का जवाब देने (फिट नहीं) करना चाहते हैं एक टुकड़ावर्त रैखिक फ़ंक्शन जिसका उद्देश्य स्कैटर प्लॉट में अंतराल डेटा के माध्य (या औसत, या कुछ अन्य फ़ंक्शन) का प्रतिनिधित्व करना है।
सबसे पहले, एक संबंधित लेकिन अधिक परिष्कृत विकल्प प्रतिगमन का उपयोग कर, जो स्पष्ट रूप से some MATLAB code listed on the wikipedia page है, Multivariate adaptive regression splines है।
समाधान यहाँ सिर्फ कुछ बनती एक्स और वाई डेटा मैं लंबाई 0 के अंतराल के साथ काम किया था से अधिक मतलब की गणना करने के
function [x, y] = intervalAggregate(Xdata, Ydata, aggFun, intStep, intOverlap)
% intOverlap in [0, 1); 0 for no overlap of intervals, etc.
% intStep this is the size of the interval being aggregated.
minX = min(Xdata);
maxX = max(Xdata);
minY = min(Ydata);
maxY = max(Ydata);
intInc = intOverlap*intStep; %How far we advance each iteraction.
if intOverlap <= 0
intInc = intStep;
end
nInt = ceil((maxX-minX)/intInc); %Number of aggregations
parfor i = 1:nInt
xStart = minX + (i-1)*intInc;
xEnd = xStart + intStep;
intervalIndices = find((Xdata >= xStart) & (Xdata <= xEnd));
x(i) = aggFun(Xdata(intervalIndices));
y(i) = aggFun(Ydata(intervalIndices));
end
उदाहरण के लिए, अंक प्राप्त करने के लिए ओवरलैपिंग अंतराल पर मतलब की गणना करने के लिए है।1 होने एक दूसरे को (देखें बिखराव छवि) के साथ लगभग 1/3 ओवरलैप:
[एक्स, वाई] = intervalAggregate (Xdat, Ydat, @mean, 0.1, 0.333)
एक्स =
कॉलम 1 के माध्यम से 8
0.0552 0.0868 0.1170 0.1475 0.1844 0.2173 0.2498 0.2834
कॉलम 9 15
0.3182 0.3561 0.3875 0.4178 0.4494 0.4671 0.4822
y =
कॉलम के माध्यम से 1 के माध्यम से 8
0.9992 0.9983 0.9971 0.9955 0.9927 0.9905 0.9876 0.9846
कॉलम 9 के माध्यम से 15
0.9803 0.9750 0.9707 0.9653 0.9598 0.9560 0.9537
हम देखते हैं कि एक्स बढ़ जाती है के रूप में, y मामूली कमी कम करता है y। वहां से, रेखा खंडों को आकर्षित करने और/या किसी अन्य प्रकार की चिकनाई करने के लिए पर्याप्त आसान है।
(ध्यान दें कि मैं इस समाधान vectorize का प्रयास नहीं किया,। यदि Xdata क्रमबद्ध हो जाता है एक बहुत तेजी से संस्करण माना जा सकता है)
आप स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। रैखिक इंटरपोलेशन और मैटलैब के लिए मेरी उथली पृष्ठभूमि के लिए खेद है। मुझे लगता है कि आपने जो किया है वह बहुत अच्छा है। हालांकि, मेरे अनुसार मेरे कोड को संशोधित करने में मुझे कठिन समय है। मेरा मूल डेटा, वाई, 1 * 73 पंक्ति वेक्टर है जिसका वितरण सीजेएच के समाधान में सामान्य साजिश की तरह दिखता है। क्या आप लॉग-लॉग अक्ष प्लॉट (अंतिम लॉग (लॉग (x)) गणना में अंतिम परिणाम दिखाने के लिए अपने कोड को संशोधित कैसे कर सकते हैं)? बहुत बहुत धन्यवाद, – Cassie