คำถามติดแท็ก fft

การแปลงฟูริเยร์ที่รวดเร็วเป็นอัลกอริธึมที่มีประสิทธิภาพในการคำนวณการแปลงฟูริเยร์แบบแยก (DFT) และอินเวอร์ส

4
อัลกอริทึมสำหรับการคำนวณ FFT ในแบบคู่ขนาน
ฉันพยายามทำให้การคำนวณ FFT เป็นคู่ขนานกับไฟล์สัญญาณขนาดเทราไบต์ ตอนนี้ FFT ที่ใช้ไลบรารีโอเพ่นซอร์สนั้นใช้เวลาหลายชั่วโมงแม้แต่วิ่งผ่าน CUDA บน GPU ที่เร็วที่สุดที่ฉันมี กรอบที่ฉันพยายามปรับให้เข้ากับกระบวนการนี้คือ Hadoop ในแง่พื้นฐานมาก Hadoop กระจายปัญหาบนโหนดเซิร์ฟเวอร์จำนวนเท่าใดก็ได้ในลักษณะดังต่อไปนี้: •คุณแบ่งไฟล์อินพุตของคุณเป็นคู่ (คีย์, ค่า) •คู่เหล่านี้จะถูกป้อนเข้าสู่อัลกอริทึม“ แผนที่” ซึ่งจะแปลงคู่ (คีย์, ค่า) ของคุณให้เป็นคู่อื่น ๆ (คีย์, ค่า) ตามสิ่งที่คุณใส่ไว้ในแผนที่ •จากนั้นเฟรมเวิร์กจะรวบรวมเอาท์พุต (คีย์, ค่า) ทั้งหมดจากแผนที่และเรียงลำดับตามคีย์รวมถึงการรวมค่าด้วยคีย์เดียวกันให้กับคู่เดียวดังนั้นคุณจึงจบลงด้วย (คีย์รายการ (ค่า 1, ค่า 2, .. )) คู่ • คู่เหล่านี้จะถูกป้อนเข้าสู่อัลกอริธึม "ลด" ซึ่งจะส่งผลให้คู่ (คีย์, ค่า) คู่เป็นผลลัพธ์สุดท้ายของคุณ (เขียนลงไฟล์) มีแอพพลิเคชั่นมากมายสำหรับโมเดลนี้ในทางปฏิบัติเช่นการประมวลผลบันทึกเซิร์ฟเวอร์ แต่ฉันมีเวลายากที่จะใช้เฟรมเวิร์กเพื่อตัดค่า …
12 fft 

4
การคำนวณค่าสัมพันธ์อัตโนมัติอย่างมีประสิทธิภาพโดยใช้ FFT
ฉันกำลังพยายามคำนวณความสัมพันธ์อัตโนมัติบนแพลตฟอร์มที่มีการเร่งความเร็วแบบดั้งเดิมที่ฉันมีอยู่คือ (I) FFT ฉันมีปัญหาว่า ฉันเป็นต้นแบบในMATLAB อย่างไรก็ตามฉันสับสนเล็กน้อย ฉันคิดว่ามันใช้งานได้ง่ายดังต่อไปนี้ (มาจากความทรงจำดังนั้นขอโทษถ้าฉันทำผิดเล็กน้อย) autocorr = ifft( complex( abs( fft( inputData ) ), 0 ) ) อย่างไรก็ตามฉันได้รับผลลัพธ์ที่แตกต่างจากการใช้xcorrฟังก์ชั่น ตอนนี้ฉันคาดหวังอย่างเต็มที่ว่าจะไม่ได้รับทางด้านซ้ายของความสัมพันธ์แบบอัตโนมัติ (เนื่องจากเป็นภาพสะท้อนของทางด้านขวามือและไม่จำเป็นต้องมีอยู่แล้ว) อย่างไรก็ตามปัญหาคือด้านขวามือของฉันดูเหมือนจะสะท้อนตัวเองรอบจุดกึ่งกลาง ซึ่งหมายความว่าฉันได้รับข้อมูลประมาณครึ่งหนึ่งอย่างที่ฉันคาดไว้ ดังนั้นฉันแน่ใจว่าฉันจะต้องทำสิ่งที่ผิดง่าย ๆ แต่ฉันก็ไม่สามารถหาอะไรได้

3
เหตุใดฉันจึงมีการรั่วไหลของความถี่ใน DFT หลังจากไม่มีการเติมเต็มศูนย์หากความละเอียดความถี่ดี
ลองพิจารณาตัวอย่างนี้: Fs=1000; Ns=500; t=0:1/Fs:(Ns-1)*1/Fs; f1=10; f2=400; x=5+5*sin(2*pi*f1*t)+2*sin(2*pi*f2*t); X=fft(x); ในสถานการณ์สมมตินี้ความละเอียดความถี่คือ 2 และส่วนประกอบความถี่ทั้งหมดจะถูกบันทึกอย่างถูกต้อง อย่างไรก็ตามถ้าฉันทำสิ่งนี้: X=fft(x,1000); ความละเอียดความถี่คือ 1 แต่มีการรั่วไหลของสเปกตรัม ผลที่คล้ายกันมีให้เห็นที่นี่ สำหรับฉันแล้วการแปลงฟูริเยร์ของหน้าต่างทั้งสอง (หนึ่งที่มีความยาว 500 และอีกอันที่มีความยาว 1,000) มีศูนย์ที่ความถี่ที่แสดงในสัญญาณดังนั้นฉันไม่เห็นว่าทำไมการรั่วไหลจึงเกิดขึ้น

2
ทำไมเราถึงพูดว่า“ การเติมเต็มศูนย์ไม่เพิ่มความละเอียดของความถี่”
นี่คือไซน์ของความถี่f = 236.4 Hz(ยาว 10 มิลลิวินาทีมีN=441คะแนนที่อัตราการสุ่มตัวอย่างfs=44100Hz) และ DFT โดยไม่มีการเติมเต็ม : ข้อสรุปเดียวที่เราสามารถให้ได้โดยดูจาก DFT คือ: "ความถี่ประมาณ 200Hz" นี่คือสัญญาณและ DFT ของมันที่มีการเติมเต็มศูนย์ขนาดใหญ่ : ตอนนี้เราสามารถให้ข้อสรุปที่แม่นยำมากขึ้น : "โดยการดูอย่างละเอียดที่สเปกตรัมสูงสุดฉันสามารถประมาณความถี่ 236Hz" (ฉันซูมและพบว่าค่าสูงสุดอยู่ใกล้ 236) คำถามของฉันคือทำไมเราบอกว่า "ศูนย์ padding ไม่ได้เพิ่มความละเอียด" ? (ฉันเห็นประโยคนี้บ่อยมากจากนั้นพวกเขาพูดว่า "เพิ่มการแก้ไขเท่านั้น") => จากตัวอย่างของฉันการเติมเต็มศูนย์ช่วยให้ฉันค้นหาความถี่ที่ถูกต้องด้วยความละเอียดที่แม่นยำยิ่งขึ้น!

2
สถิติใดที่ใช้ในการพิจารณาว่ามีสัญญาณรบกวนหรือไม่?
นี่เป็นปัญหาของเครื่องมือตรวจจับที่ฉันเชื่อว่า: ฉันกำลังนิ่งงันโดยสิ่งที่ดูเหมือนจะเป็นปัญหาง่าย ๆ โดยทั่วไปฉันมีวงดนตรีที่น่าสนใจ หากพลังงานสัญญาณมีอยู่ในย่านที่น่าสนใจนี้ฉันจะทำการดำเนินการ X กับสัญญาณของฉัน ปัญหาของฉันคือฉันไม่แน่ใจว่าจะเลือก 'ตัดสินใจ' ได้อย่างไรหากมีสัญญาณอยู่หรือไม่ ในที่นั้นหลังจากที่ฉันแสดง FFT ฉันสามารถมองหาจุดสูงสุด แต่ตอนนี้อะไร สถิติที่ใช้มักจะเปรียบเทียบจุดสูงสุดนี้กับค่าเฉลี่ยของสเปกตรัมโดยรอบหรือไม่? หรือว่าเป็นสถิติอื่น ๆ ฉันใช้การวัดทางสถิติใดในการพิจารณาว่ามีสัญญาณอยู่หรือไม่และไปจากที่นั่น ฉันจะตั้งค่านี้ได้อย่างไร thresholding ง่าย ๆ ? แก้ไขตามข้อเสนอแนะ: สำหรับกรณีง่าย ๆ นี้ฉันถือว่าเป็นเสียงในแบบเกาส์เซียนสีขาว สิ่งที่ฉันพยายามจัดการคือ: คนเราสร้างเส้นโค้ง ROC ได้อย่างไร ใครจะต้องไปและติดป้ายกำกับข้อมูลทั้งหมดก่อนแล้วจึงได้อัตราจริงที่เป็นบวกและเท็จบวกสำหรับเกณฑ์มากมาย SNR ที่ลดลงมีผลต่อเส้นโค้ง ROC อย่างไร ย้ายไปทางแนวทแยงหรือไม่ thesholding ปรับตัวอะไรที่ทำกับเส้นโค้ง ROC ที่กำหนดซึ่งถูกสร้างขึ้นโดยไม่มีเกณฑ์การปรับตัว? 3a เทคนิคการปรับตัวที่ใช้ร่วมกันทั่วไปที่ฉันสามารถดูนั้นเป็นเรื่องธรรมดาคืออะไร?

6
มีแอปพลิเคชันที่ใช้งานได้จริงเพื่อทำการแปลงฟูริเยร์คู่หรือไม่? …หรือฟูริเยร์ผกผันแปลงเป็นอินพุตโดเมนไทม์
ในคณิตศาสตร์คุณสามารถหาอนุพันธ์คู่หรือฟังก์ชันอินทิกรัลสองครั้ง มีหลายกรณีที่การแสดงแบบจำลองอนุพันธ์สองครั้งเป็นสถานการณ์จริงในโลกจริงเช่นการค้นหาการเร่งความเร็วของวัตถุ เนื่องจากการแปลงฟูริเยร์ใช้สัญญาณจริงหรือเชิงซ้อนเป็นอินพุตและสร้างสัญญาณที่ซับซ้อนเป็นเอาท์พุทจึงไม่มีอะไรหยุดคุณจากการเอาท์พุทนั้นและใช้การแปลงฟูริเยร์เป็นครั้งที่สอง ... นี้? มันช่วยจำลองสถานการณ์ที่ซับซ้อนจริง ๆ บ้างไหม? ด้วยตรรกะเดียวกันไม่มีอะไรจะหยุดคุณจากการแปลงฟูริเยร์ผกผันของสัญญาณอินพุตโดเมนเวลาดั้งเดิมของคุณ ... สิ่งนี้จะมีประโยชน์หรือไม่? ทำไมหรือทำไมไม่?

2
การสร้างภาพใหม่: เฟสเทียบกับขนาด
รูปที่ 1 (c) แสดงภาพทดสอบที่สร้างจากสเปกตรัม MAGNITUDE เท่านั้น เราสามารถพูดได้ว่าค่าความเข้มของพิกเซลความถี่ต่ำนั้นมากกว่าพิกเซลความถี่สูง รูปที่ 1 (d) แสดงภาพทดสอบที่สร้างขึ้นใหม่จากช่วงสเปกตรัมเท่านั้น เราสามารถพูดได้ว่าค่าความเข้มของพิกเซลความถี่สูง (ขอบเส้น) มีค่ามากกว่าพิกเซลความถี่ต่ำ เหตุใดความแตกต่างที่น่าอัศจรรย์ของการเปลี่ยนแปลงความเข้ม (หรือการแลกเปลี่ยน) จึงเกิดขึ้นระหว่างภาพการทดสอบที่สร้างขึ้นใหม่จากสเปกตรัม MAGNITUDE เท่านั้นและภาพการทดสอบที่สร้างขึ้นใหม่จากสเปกตรัม PHASE เท่านั้นซึ่งเมื่อรวมเข้าด้วยกันเป็นภาพทดสอบต้นฉบับ clc; clear all; close all; i1=imread('C:\Users\Admin\Desktop\rough\Capture1.png'); i1=rgb2gray(i1); f1=fftn(i1); mag1=abs(f1); s=log(1+fftshift(f1)); phase1=angle(f1); r1=ifftshift(ifftn(mag1)); r2=ifftn(exp(1i*phase1)); figure,imshow(i1); figure,imshow(s,[]); figure,imshow(uint8(r1)); figure,imshow(r2,[]); r2=histeq(r2); r3=histeq(uint8(r2)); figure,imshow(r2); figure,imshow(r3);

3
การจำลองประสิทธิภาพ ADC: วิธีการคำนวณ SINAD จาก FFT?
ในขณะที่ทำงานกับปัญหานี้ฉันเริ่มมีข้อสงสัยว่าคำจำกัดความเริ่มต้นของฉัน Sผมยังไม่มีข้อความA D = 10 บันทึก10( หน้าฉΣผม( หน้าผม) -หน้า0- หน้าฉ) dBSINAD=10log10⁡(pf∑i(pi)−p0−pf)dBSINAD = 10 \log_{10} \left( \frac{p_f} {\sum_i{(p_i)} - p_0 - p_f} \right)dB ถูกต้อง. ในสมการนี้คือกำลังที่ FFT bin ที่ความถี่ ,คือกำลังของ bin ความถี่ที่มีความถี่สัญญาณและคือส่วนประกอบ DC ผลรวมกว่าสะสมส่วนประกอบความถี่ทั้งหมดก่อนที่จะถอดส่วนประกอบ DCและสัญญาณความถี่p_f x p f f p 0ฉันp 0 p fพีxpxp_xxxxพีฉpfp_fฉffพี0p0p_0ผมiiพี0p0p_0พีฉpfp_f โดยเฉพาะอย่างยิ่งฉันไม่แน่ใจเกี่ยวกับส่วนซึ่งฉันตีความจากคำอธิบาย WikipediaΣผม( หน้าผม)∑i(pi)\sum_i(p_i) อัตราส่วนของ (a) พลังของสัญญาณเสียงมอดูเลตดั้งเดิมเช่นจากตัวพาความถี่คลื่นวิทยุที่ปรับไปจนถึง (b) พลังเสียงที่เหลือเช่นพลังเสียงรบกวนบวก …
11 fft  noise 

3
การตรวจจับขอบสามารถทำได้ในโดเมนความถี่หรือไม่
เราสามารถใช้ประโยชน์จากข้อเท็จจริงที่ว่าส่วนประกอบความถี่สูงใน FFT ของภาพโดยทั่วไปสอดคล้องกับขอบเพื่อใช้อัลกอริทึมตรวจจับขอบในโดเมนฟูริเยร์? ฉันลองคูณตัวกรองความถี่สูงผ่านด้วย FFT ของรูปภาพ แม้ว่าการเรียงลำดับภาพที่เป็นผลลัพธ์จะตรงกับขอบ แต่ก็ไม่ได้เป็นการตรวจจับขอบที่สร้างขึ้นโดยใช้เมทริกซ์ convolution อย่างแน่นอน ดังนั้นมีวิธีใดที่คุณสามารถทำการตรวจจับขอบในโดเมนฟูริเยร์หรือเป็นไปไม่ได้เลย?

3
วิธีการตอบสนองที่ซับซ้อนเฉลี่ย (และเหตุผล)?
ฉันกำลังพัฒนาซอฟต์แวร์ที่คำนวณการตอบสนองของระบบโดยการเปรียบเทียบ FFT ของสัญญาณอินพุตและเอาต์พุต สัญญาณอินพุทและสัญญาณเอาท์พุตนั้นแบ่งออกเป็น windows และสำหรับแต่ละหน้าต่างสัญญาณจะถูกลบและแบ่งโดยฟังก์ชันฮันน์ การตอบสนองของอุปกรณ์สำหรับหน้าต่างนั้นจะเป็นอัตราส่วนของ FFT ของข้อมูลที่ประมวลผล ฉันเชื่อว่าข้างต้นเป็นขั้นตอนมาตรฐานแม้ว่าฉันอาจจะอธิบายได้ไม่ดี ปัญหาของฉันมาในวิธีการรวมการตอบสนองจากหน้าต่างหลายบาน เท่าที่ฉันเห็นวิธีการที่ถูกต้องคือการหาค่าเฉลี่ยที่ซับซ้อนในทุกหน้าต่าง การตอบสนองของแอมพลิจูดและเฟสนั้นจะเป็นแอมพลิจูดและเฟสของค่าเฉลี่ยค่าเชิงซ้อนที่แต่ละความถี่: av_response = sum_windows(response) / n av_amplitude = sqrt(real(av_response)**2 + imag(av_response)**2) av_phase = atan2(imag(av_response), real(av_response)) ด้วยการวนซ้ำโดยอ้อมผ่านช่องเก็บความถี่ แต่ฉันถูกขอให้เปลี่ยนสิ่งนี้เพื่อคำนวณแอมพลิจูดและเฟสในแต่ละหน้าต่างก่อนจากนั้นจึงเฉลี่ยแอมพลิจูดและเฟสในหน้าต่างทั้งหมด: amplitude = sqrt(real(response)**2 + imag(response)**2) av_amplitude = sum_windows(amplitude) / n phase = atan2(imag(response), real(response)) av_phase = sum_windows(phase) / n ฉันได้แย้งว่าสิ่งนี้ไม่ถูกต้องเนื่องจากมุมเฉลี่ย "ผิด" …

3
วิธีการสร้างฟิลเตอร์ชดเชยการบิดเบือน
ฉันกำลังสร้างแชนเนลไลเซอร์ที่ประกอบด้วยตัวปรับแต่งเสียงที่ซับซ้อนตัวถอดรหัสCICและตัวกรองการชดเชย / การทำลายล้าง FIR ตัวกรอง FIR สุดท้ายอาจนำไปใช้เป็นตัวกรองมากกว่าหนึ่งตัว คำถามของฉันคือฉันจะออกแบบตัวกรองอย่างไรเพื่อชดเชยการตอบสนองความถี่ที่ไม่แบนของตัวกรอง CIC คุณสร้างการตอบสนองความถี่ที่คุณต้องการโดยการคำนวณส่วนกลับของการตอบสนองของ CIC แล้วเรียกใช้ผ่าน FFT ผกผันเพื่อรับการตอบสนองต่อแรงกระตุ้น อย่างที่คุณเห็นแม้ว่าปัญหาเฉพาะของฉันเกี่ยวข้องกับตัวกรอง CIC คำถามของฉันคือเกี่ยวกับวิธีที่คุณสร้างตัวกรองการชดเชยความผิดเพี้ยนใด ๆ ขอบคุณที่สละเวลา.

4
DFT - การลบเอฟเฟกต์หน้าต่างในโดเมนสเปกตรัมด้วย convolution
ฉันกำลังคิดเกี่ยวกับเรื่องการเลื่อนหน้าต่าง DFT และความคิดเข้ามาในใจของฉัน DFT จะให้คลื่นความถี่ของสัญญาณที่ซับซ้อนด้วยสเปกตรัมของหน้าต่างที่ใช้ดังนั้นจึงมีก้อนหลักและก้อนด้านข้าง ฉันคิดว่ามันเป็นไปได้ที่จะลบเอฟเฟกต์หน้าต่างบนสเปกตรัมของสัญญาณโดยการโน้มน้าวอีกครั้งทั้งสัญญาณและขนาดสเปกตรัมของหน้าต่างและมันก็ใช้งานได้จริงอย่างที่คุณเห็นในภาพต่อไปนี้ ด้านซ้ายคือสเปกตรัมต้นฉบับที่สร้างด้วยหน้าต่างการแฮ็ก ขวาเป็นสเปกตรัมที่ซับซ้อนโดย DFT ของหน้าต่าง hanning ด้านบนคือสเปกตรัมเองด้านล่างคือfindpeaksผลลัพธ์ของMATLAB ฉันไม่เคยอ่านอะไรเกี่ยวกับเทคนิคนี้ แต่ฉันค่อนข้างแน่ใจว่าฉันไม่ได้คิดค้นอะไรที่นั่น ดังนั้นฉันจึงสงสัยว่าจะมีประโยชน์ในการทำโพรเซสซิงนี้หรือไม่ถ้ามีข้อเสียคือฉันไม่เห็น จากสิ่งที่ฉันเห็นสิ่งนี้สามารถช่วยให้การตรวจจับสูงสุดอย่างที่เราเห็นในภาพก่อนหน้า นอกจากนี้ดูเหมือนว่าสเปกตรัมจะมีการบิดเบือนเล็กน้อยเช่นที่เราเห็นในภาพต่อไปนี้ 2 : ที่ซึ่งกราฟสีน้ำเงินคือสเปกตรัมและกราฟสีแดงคือสเปกตรัมที่ซับซ้อน มีความคิดเห็นเกี่ยวกับเรื่องนี้ไหม? มีปัญหาที่อาจเกิดขึ้นจากการสนทนาโพสต์ FFT นี้หรือไม่? กระดาษชนิดใดที่ใช้กับตัวแบบ? แก้ไข คุณสามารถค้นหาสคริปต์ที่นี่ซึ่งจะสร้างกราฟต่อไปนี้:

3
MATLAB:และ scaling
ใน MATLAB ผลลัพธ์ของfftและ / หรือifftฟังก์ชั่นมักจะต้องการการประมวลผลเพิ่มเติมก่อนที่จะได้รับการพิจารณาเพื่อการวิเคราะห์ ฉันเคยได้ยินความคิดเห็นที่แตกต่างมากมายในสิ่งที่ถูกต้อง: ขูดหินปูน Mathworks ระบุว่าfftและifftฟังก์ชันจะขึ้นอยู่กับสมการต่อไปนี้: X[k]x[n]=11⋅∑n=1Nx[n]⋅e−j⋅2π⋅(k−1)⋅(n−1)N,where1≤k≤N=1N⋅∑k=1NX[k]⋅e+j⋅2π⋅(k−1)⋅(n−1)N,where1≤n≤NX[k]=11⋅∑n=1Nx[n]⋅e−j⋅2π⋅(k−1)⋅(n−1)N,where1≤k≤Nx[n]=1N⋅∑k=1NX[k]⋅e+j⋅2π⋅(k−1)⋅(n−1)N,where1≤n≤N\begin{align} X[k] &= \frac{1}{1} \cdot \sum_{n=1}^{N} x[n] \cdot e^{\frac{-j \cdot 2 \pi \cdot (k-1) \cdot (n-1)}{N}}, \quad\textrm{where}\quad 1\leq k\leq N\\ x[n] &= \frac{1}{N} \cdot \sum_{k=1}^{N} X[k] \cdot e^{\frac{+j \cdot 2 \pi \cdot (k-1) \cdot (n-1)}{N}},\quad \textrm{where}\quad 1 \leq n\leq N \end{align} …
11 matlab  fft  ifft 

3
FFT สำหรับช่วงความถี่เฉพาะ
ฉันต้องการแปลงสัญญาณเป็นโดเมนความถี่ ช่วงความถี่ที่ต้องการเป็น0.1 Hzไปและความละเอียดความถี่1 Hz0.01 Hz ด้วยอัตราการสุ่มตัวอย่าง30 HzFFT ให้ส่วนประกอบความถี่สูงถึง 15 Hz การเพิ่มอัตราการสุ่มตัวอย่างให้ความละเอียดความถี่ที่ดีขึ้น อย่างไรก็ตาม FFT ให้ช่วงความถี่ที่กว้างขึ้น ในกรณีของฉันฉันเพียงต้องการ0.1 Hzที่จะ1 Hz, FFT ให้ถึง15 Hz(คำนวณพิเศษ) คำถามของฉันคือมีวิธีมาตรฐานในการคำนวณโดเมนความถี่ของสัญญาณที่มีช่วงความถี่เฉพาะและความละเอียดสูงหรือไม่
11 fft  frequency 

2
จะทำนายได้อย่างไรโดยใช้ข้อมูลโดเมนความถี่
การถดถอยเชิงเส้นและตัวกรองคาลมานสามารถใช้ในการประมาณค่าและทำนายจากลำดับเวลาของข้อมูลในโดเมน หากมีวิธีใดบ้างที่สามารถใช้ในการทำนายโดยใช้ข้อมูลโดเมนความถี่ได้ (เช่นทำนายขั้นตอนในอนาคตโดยใช้ผลลัพธ์จาก FFT ที่เหมาะสมของข้อมูลก่อนหน้าโดยไม่ต้องย้อนกลับไปที่โดเมนเวลาสำหรับการประมาณค่า) ข้อสมมติฐานเกี่ยวกับข้อมูลหรือตัวแบบเบื้องหลังข้อมูลอาจจำเป็นสำหรับสิ่งที่มีคุณภาพหรือการเพิ่มประสิทธิภาพของการทำนายในโดเมนความถี่ (แต่คิดว่ามันไม่เป็นที่ทราบแน่ชัดว่าแหล่งข้อมูลนั้นมีความกว้างรูรับแสง FFT เป็นระยะอย่างเคร่งครัดหรือไม่)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.