একটি টেবিলে নতুন তথ্য তৈরি এবং একটি মাপসই করা


1

আমি নিম্নলিখিত কাজ করতে চান:

গাউসিয়ান লাইনের আকৃতির পরে আমার একটি ডেটা সেট আছে, তবে কিছু তথ্য রয়েছে যা দৃঢ়ভাবে বিচ্যুতি করছে। ফলস্বরূপ এই তথ্য পয়েন্ট অন্তর্ভুক্ত করা উচিত নয়।

তাই আমার ধারণাটি ২ গৌসিয়ানের উপরে ও এক নিচের একটি সীমাবদ্ধতা হিসাবে তৈরি করা। তাই এই 2 গাউসিয়ানদের মধ্যে থাকা সমস্ত তথ্য পয়েন্ট উপযুক্ত এবং বাকিগুলির বাইরে নয় বলে বিবেচিত হয়।

enter image description here

আমি সহজে ২ গাউসিয়ান তৈরি করতে এবং একটি টেবিলে এই তথ্যটি ব্যবহার করে তৈরি করতে পারি: (নোটিশ: তথ্য = তথ্য ফাইল)

set table '1.Gauss'                  
plot g(x)+0.1   
unset table  
set table '2.Gauss'  
plot g(x)-0.1  
unset table  
set table 'all'  
plot '1.Gauss', '2.Gauss', 'data'  
unset table  

কিন্তু তারপর: সমস্ত তথ্য অন্য একটি তালিকাভুক্ত করা হয়। তাছাড়া আমি এই দুটি গাউসিয়ানদের মধ্যে যদি এই তথ্যটি ব্যবহার করে বলার অপেক্ষা রাখে না পরে কিভাবে ফিট করতে পারি তা জানি না।

আপনি অন্য কোন ধারণা আছে?

সংযোজন:

আমি সত্যিই প্রোগ্রামিং বা gnuplot মধ্যে তাই না আমি আপনার বার্তা বুঝতে অসুবিধা আছে। তাই এখানে gnuplot আমার প্রোগ্রামিং সব হয়:

    set xrange [1038.6603:1038.666]
    set yrange [0.8:1.3]
    file="data"   
    g(x) = N0*(A*exp(-(x-(b+d))2/(2*sigma2)))+c  
    N0=0.2; b=1038.66315;d=0.00001; c=1; A=3; sigma=0.0001

    filterData(y,m,M)=((yM)? 1/0 : y)  
    fit h(x) file using 1:(filterData($2,g($1)-0.1,g($1)+0.1)) via N0,d,c,A,sigma 
    plot file using 1:(filterData($2,g($1)-0.1,g($1)+0.1)) g(x)-0.1, g(x)+1, h(x)

শেষ সারিতে দ্বিতীয়টিতে, গনুপলট বলেছেন: "অনির্ধারিত পরিবর্তনশীল: x"

আমি জানি কিছু অবশ্যই অনুপস্থিত বা ভুল, কিন্তু আমি ঠিক কিভাবে সমাধান করতে জানি না। খুব সম্ভবত আপনার লাইন মন্তব্য করতে পারে? তাই আমার মতো একজন লোক যে এটা বুঝতে পারে? ধন্যবাদ :)

এখানে দ্বিতীয় যোগ করুন:

এখানে আমার সব লেখা আছে:

    set xrange [1038.6598:1038.6663]
    set yrange [0.8:1.3]
    set fit errorvariables
    file= "09_05_16-10.thzpp"        
    g(x) = N0*(A*exp(-(x-(b+d))**2/(2*sigma**2)))+c
    N0=0.2; b=1038.66315;d=0.00001; c=1; A=3; sigma=0.0001
    filterData(y,m,M)=((y<m||x>M)? 1/0 : y)
    fit h(x) file using 1:(filterData($2,g($1)-0.1,g($1)+0.1)) via N0,d,c,A,sigma 
    plot file using 1:(filterData($2,g($1)-0.1,g($1)+0.1)), g(x)-0.1, g(x)+1, h(x)

এই আমাকে ত্রুটি দেয় "লাইন 8: অনির্ধারিত পরিবর্তনশীল: এক্স"

সুতরাং আমার তথ্য এক্স-রেঞ্জের মধ্যে রয়েছে: [1038.6598: 1038.6663]। যখন আমি শেষ 3 টি লাইন মুছে ফেলি এবং পরিবর্তে এটি ব্যবহার করি:

   fit [1038.6603:1038.666] [0.95:1.2] g(x) file via N0,d,c,A,sigma
   plot file title 'Messung', g(x) title 'Fit'

এটা কাজ করে, কিন্তু আমি এই চমৎকার 2 গসিয়ান নিষেধাজ্ঞা আছে না।

তাই আমার উপরের টেক্সট ভুল কি?


আপনার সূত্রের অন্তত একটি টাইপো আছে g, দ্য 2 একটি বন্ধনী পরে। অনুগ্রহ করে আপনার কোডটি অনুলিপি করুন। এছাড়াও, আপনার এক্স-রেঞ্জটি খুব বেশি জ্ঞান দেয় না, যদি আপনার তথ্য প্রকৃতপক্ষে x = 1038.6603 এবং x = 1038.666 এর মধ্যে থাকে এবং দ্বিগুণ-স্পষ্টতা গাণিতিকের সাথে ভাসমান বিন্দু গণনা দ্বারা প্রাপ্ত হয়, তাহলে আমি ভয় করি যে এক্সের আপেক্ষিক ত্রুটিটি বিশাল হবে। এবং এই উপযুক্ত জন্য একটি সমস্যা হতে পারে। আপনি থেকে এই ফ্রিকোয়েন্সি তথ্য উৎপত্তি পুনরায় সেট করা উচিত।
Joce

এখানে এটি 'অনির্ধারিত ফাংশন h (x)' দেয়। আপনি এটা সংজ্ঞায়িত করতে হবে। আমি নীচের আমার উত্তরে এটি কেনার কারণটি হল যে আপনি ফিল্টার করার সময় একই সময় ব্যবহার করার সময় জি (x) ফিট করে সামঞ্জস্য করতে পারবেন না ...
Joce

হ্যাঁ আমি করেছি, কিন্তু এটি সাহায্য করে না। অনুগ্রহ করে কেউ কি আমাকে সাহায্য করবেন?
Mattes

শুধু লক্ষনীয়, একটি আছে x মধ্যে filterData(y,m,M)=((y<m||x>M)? 1/0 : y) যা একটি হতে হবে y, filterData(y,m,M)=((y<m||y>M)? 1/0 : y)
Joce

আমি গতকাল এই ভুল খুঁজে পেয়েছি :) এখন এটি কাজ করছে: ডি !!! মহান, আপনাকে ধন্যবাদ! কিন্তু ... নিম্নলিখিতটি সত্যিই গুরুতর: আমি যদি ২ গাউসিয়ানদের সাথে ফিট ব্যবহার করি, তবে আমার ভুল গাউসিয়ানদের চেয়ে বড়। কিন্তু এটি প্রায় অন্য উপায় হতে হবে। তুমি কি জানো কেন?
Mattes

উত্তর:


1

আপনি একটি ফাংশন তৈরি করে কিছু তথ্য ফিল্টার করতে পারেন:

min_value = 1
max_value = 2
filterData(x)=(x < min_value || x > max_value) ? (1/0) : (x)
plot 'data' u 1:(filterData($2))

ত্রৈমাসিক অপারেটর: (is this true) ? it is true : it is false এবং 1/0 অনির্দিষ্ট যা গুনুপ্লট চুপ করে উপেক্ষা করবে।

(পরীক্ষিত না)


1

আমি বুঝতে পারছি না কেন গাউসিয়ানদের ফাইলগুলিতে সংরক্ষণ করতে হবে, আপনি সরাসরি আপনার গাউস ফাংশন ব্যবহার করে কাজ করতে পারেন g

আপনি দুটি গাউসিয়ানদের সাথে আপনার ডেটা তুলনা করতে চান, আপনার ফিল্টারিং ফাংশনটিকে বিবেচনা করা অবস্থানে সর্বোচ্চ এবং সর্বনিম্ন মান দিতে হবে:

filterData(y,m,M)=((y<m||y>M)? 1/0 : y)

তারপর আপনি চক্রান্ত এবং / অথবা উপযুক্ত করতে পারেন:

fit h(x) 'data' using 1:(filterData($2,g($1)-0.1,g($1)+0.1)) via ...
plot 'data' using 1:(filterData($2,g($1)-0.1,g($1)+0.1)), \
     g(x)-0.1, \
     g(x)+0.1, \
     h(x)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.