আমার একই জ্যোতির্বিদ্যা সংক্রান্ত দুটি জিনিস রয়েছে spect অপরিহার্য প্রশ্নটি হ'ল: আমি কীভাবে এই বর্ণালীর মধ্যে আপেক্ষিক স্থানান্তরটি গণনা করতে পারি এবং সেই শিফটে একটি সঠিক ত্রুটি পেতে পারি?
আপনি এখনও আমার সাথে থাকলে আরও কিছু বিশদ। প্রতিটি বর্ণালী একটি এক্স মান (তরঙ্গদৈর্ঘ্য), y মান (ফ্লাক্স), এবং ত্রুটি সহ একটি অ্যারে হবে। তরঙ্গদৈর্ঘ্য শিফট সাব পিক্সেল হতে চলেছে। অনুমান করুন যে পিক্সেলগুলি নিয়মিতভাবে ব্যবধানে থাকে এবং পুরো স্পেকট্রামে কেবল একটি একক তরঙ্গদৈর্ঘ্য শিফট প্রয়োগ করা হবে। সুতরাং শেষের উত্তরটি এমন হবে: 0.35 +/- 0.25 পিক্সেল।
দুটি বর্ণালী বেশ কয়েকটি বৈশিষ্ট্যযুক্ত ধারাবাহিক হতে চলেছে যা কিছু জটিল শোষণ বৈশিষ্ট্য (ডিপস) দ্বারা বিরামচিহ্ন হয় যা সহজেই মডেল হয় না (এবং পর্যায়ক্রমে হয় না)। আমি এমন একটি পদ্ধতি খুঁজে পেতে চাই যা সরাসরি দুটি বর্ণের সাথে তুলনা করে।
প্রত্যেকের প্রথম প্রবৃত্তিটি ক্রস-পারস্পরিক সম্পর্ক স্থাপন করা হয় তবে সাবপিক্সেল শিফটগুলির সাথে আপনাকে স্পেকট্রার মধ্যে বিভক্ত হতে হবে (প্রথমে স্মুথিং দ্বারা?) - ত্রুটিগুলি সঠিকভাবে পেতে খারাপ লাগবে।
আমার বর্তমান পদ্ধতিটি হ'ল গাউসিয়ান কার্নেলের সাথে সংশ্লেষ করে ডেটা মসৃণ করা, তারপরে স্মুথযুক্ত ফলাফলটি ছড়িয়ে দেওয়া এবং দুটি স্প্লাইড বর্ণালির তুলনা করা - তবে আমি এটি বিশ্বাস করি না (বিশেষত ত্রুটিগুলি)।
কেউ কি সঠিকভাবে এটি করার কোনও উপায় জানেন?
এখানে একটি সংক্ষিপ্ত পাইথন প্রোগ্রাম রয়েছে যা আপনার সাথে খেলতে পারে এমন দুটি খেলনা বর্ণালী তৈরি করবে যা 0.4 পিক্সেল দ্বারা স্থানান্তরিত হবে (toy1.ascii এবং toy2.ascii এ লিখিত)। যদিও এই খেলনা মডেলটি একটি সাধারণ গাউসীয় বৈশিষ্ট্য ব্যবহার করে তবে ধরে নিন যে আসল ডেটা কোনও সাধারণ মডেলের সাথে মানানসই নয়।
import numpy as np
import random as ra
import scipy.signal as ss
arraysize = 1000
fluxlevel = 100.0
noise = 2.0
signal_std = 15.0
signal_depth = 40.0
gaussian = lambda x: np.exp(-(mu-x)**2/ (2 * signal_std))
mu = 500.1
np.savetxt('toy1.ascii', zip(np.arange(arraysize), np.array([ra.normalvariate(fluxlevel, noise) for x in range(arraysize)] - gaussian(np.arange(arraysize)) * signal_depth), np.ones(arraysize) * noise))
mu = 500.5
np.savetxt('toy2.ascii', zip(np.arange(arraysize), np.array([ra.normalvariate(fluxlevel, noise) for x in range(arraysize)] - gaussian(np.arange(arraysize)) * signal_depth), np.ones(arraysize) * noise))