青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 12,  comments - 54,  trackbacks - 0
一般來說,對均勻間隔采樣的數據的功率譜估計,可以采用DFT/AR/MA/ARMA/MUSIC等方法估計;
如果由于實驗條件限制,或者偶爾的數據丟失,采樣的數據間隔時間/空間不是均勻間隔的,此時,大致可以有兩種處理方式:
1)用插值的方法將數據轉換為等間隔的,然后按等間隔采樣方法處理;這種方法最大的缺陷是,在低頻成分處會出現假的凸起。
2)采用Lomb方法處理;
本文將給出Lomb方法公式推導的結果,和C++代碼實現;至于具體推導過程,請參閱

Jerry D. Scargle, Studies in Astronomical Time Series Analysis. II. Statistical Aspect of Spectral Analysis of Unevenly Spaced Data, the Astrophysical Journal, vol. 263, pp. 835--853

這里不再多說。

Lomb方法

假設數據點集為[;(h_i, t_i);](所有數學公式采用latex語法書寫),

定義其數學期望和方差分別為

[;h=\frac{1}{N} \sum_{i} h_i \\ \delta^2=

定義歸一化周期圖為

[;P_N(\omega) = \frac{1}{2 \delta ^2}  \{ \frac{[\sum_i (h_i - h) \cos \omega(t_i - \tau)]^2 {\sum_i \cos^2 \omega (t_i - \tau)}  + \frac{[\sum_i (h_i - h) \sin \omega(t_i - \tau)]^2 {\sum_i \sin^2 \omega (t_i - \tau)}  \} ;]

其中[;\tau;]由下式定義

[; \tan 2 \omega \tau =

Lomb方法的C++實現:

?1?//lomb.hpp
?2?
?3?#ifndef?LOMB_HPP_INCLUDED__
?4?#define?LOMB_HPP_INCLUDED__
?5?
?6?#include?<vector>
?7?using?std::vector;
?8?
?9?//Warning:
10?//??If?you?would?rather?a?self-defined?type?than
11?//??a?builtin?type,?these?methods?MUST?be?offered:
12?//
13?//??operator=(?const?Type&?other?)
14?//??operator=(?const?long?double&?val?)
15?//??operator+(?const?Type&?lhs,?const?Type&?rhs)
16?//??operator-(?const?Type&?lhs,?const?Type&?rhs)
17?//??operator*(?const?Type&?lhs,?const?Type&?rhs)
18?//??operator/(?const?Type&?lhs,?const?Type&?rhs)
19?//??sin(?const?Type&?val?)
20?//??cos(?const?Type&?val?)
21?//
22?template
23?<
24?????typename?Type?=?long?double
25?>
26?class?Lomb
27?{
28?????public:
29?????????vector<Type>?spectrum()?const;
30?
31?????public:
32?????????Lomb(???const?vector<Type>&?_h,
33?????????????????const?vector<Type>&?_t?);
34?????????~Lomb();
35?
36?????private:
37?????????struct?Lomb_Data;
38?????????Lomb_Data*?lomb_data;
39?};
40?
41?#include?"lomb.tcc"
42?
43?#endif?//?LOMB_HPP_INCLUDED__
44

?


//lomb.tcc

#include?
"iterator.hpp"

#include?
<cassert>
#include?
<cmath>

#include?
<numeric>
#include?
<iterator>
#include?
<algorithm>
using?namespace?std;

template
<
????typename?Type
>
struct?Lomb<Type>::Lomb_Data
{
????vector
<Type>?h;
????vector
<Type>?t;

????Type?f()?
const;
????Type?tau(?
const?unsigned?int?)?const;
????Type?e()?
const;
????Type?d()?
const;

};

template
<
????typename?Type
>
Type?Lomb
<Type>::Lomb_Data::f()const
{
????
const?Type?max?=?*(?max_element(
????????????t.begin(),?t.end()?)?);
????
const?Type?min?=?*(?min_element(
????????????t.begin(),?t.end()?)?);
????
const?unsigned?int?N?=?h.size();
????
const?Type?ans?=?N?/?(?max?-?min?)?;

????
return?ans;
}

template
<
????typename?Type
>
Type?Lomb
<Type>::Lomb_Data::tau(?const?unsigned?int?n?)const
{

????
const?Type?omega?=
????????
2.0L?*?3.14159265358979L?*?(?this?->?f()?)?*?n?;
????
const?Type?sin_?=
????????sin2_accumulate(?t.begin(),
?????????????????????????t.end(),
?????????????????????????omega
????????????????);
????
const?Type?cos_?=
????????cos2_accumulate(?t.begin(),
?????????????????????????t.end(),
?????????????????????????omega
????????????????);
????
const?Type?ans?=?atan(?sin_?/?cos_?)?/?(?2.0L?*?omega?);

????
return?ans;
}

template
<
????typename?Type
>
Type?Lomb
<Type>::Lomb_Data::e()const
{
????
const?Type?ans?=
????????mean(
????????????h.begin(),
????????????h.end(),
????????????Type_Keep
<Type>()
????????????);

????
return?ans;
}

template
<
????typename?Type
>
Type?Lomb
<Type>::Lomb_Data::d()const
{
????
const?Type?ans?=
????????variance(
????????????h.begin(),
????????????h.end(),
????????????Type_Keep
<Type>()
????????????);

????
return?ans;
}

template
<
????typename?Type
>
Lomb
<Type>::Lomb(?const?vector<Type>&?_h,
????????????
const?vector<Type>&?_t
??????????)
{
????assert(?_t.size()?
==?_h.size()?);
????lomb_data?
=?new?Lomb_Data;
????lomb_data?
->?h?=?_h;
????lomb_data?
->?t?=?_t;
}

template
<
????typename?Type
>
Lomb
<Type>::~Lomb()
{
????delete?lomb_data;
}

template
<
????typename?Type
>
vector
<Type>?Lomb<Type>::spectrum()?const
{
????
const?unsigned?int?N?=?(*lomb_data).h.size();

????
const?Type?f?=?lomb_data?->?f();
????
const?Type?e?=?lomb_data?->?e();

????
const?Type?d?=?lomb_data?->?d();

????vector
<Type>?ans;

????
for?(?unsigned?int?i?=?0;?i?<?N;?++i?)
????{
????????
const?Type?tau?=?lomb_data?->?tau(?i?);
????????
const?Type?omega?=?6.283185307179586476L?*
????????????????????????????????i?
*?f;

????????
const?Type?h_cos_square?=
????????????h_cos_square_accumulate(
????????????????????????????????????????(
*lomb_data).h.begin(),?(*lomb_data).h.end(),
????????????????????????????????????????(
*lomb_data).t.begin(),?(*lomb_data).t.end(),
????????????????????????????????????????e,
????????????????????????????????????????tau,
????????????????????????????????????????omega
????????????????????????????????????);

????????
const?Type?cos_square?=
????????????cos_square_accumulate(
????????????????????????????????????(
*lomb_data).t.begin(),
????????????????????????????????????(
*lomb_data).t.end(),
????????????????????????????????????tau,
????????????????????????????????????omega
?????????????????????????????????);

????????
const?Type?h_sin_square?=
????????????h_sin_square_accumulate(
????????????????????????????????????????(
*lomb_data).h.begin(),?(*lomb_data).h.end(),
????????????????????????????????????????(
*lomb_data).t.begin(),?(*lomb_data).t.end(),
????????????????????????????????????????e,
????????????????????????????????????????tau,
????????????????????????????????????????omega
????????????????????????????????????);

????????
const?Type?sin_square?=
????????????sin_square_accumulate(
????????????????????????????????????(
*lomb_data).t.begin(),
????????????????????????????????????(
*lomb_data).t.end(),
????????????????????????????????????tau,
????????????????????????????????????omega
?????????????????????????????????);

????????ans.push_back(?sqrt(
????????????????????????????????(
????????????????????????????????????h_cos_square
/cos_square?+
????????????????????????????????????h_sin_square
/sin_square
????????????????????????????????)?
/?(2.0L*d)
????????????????????????????)?
/?N
?????????????????????);
????}

????
return?ans;
}

?

??1?//iterator.hpp
??2?
??3?#ifndef?ITERATOR_HPP_INCLUDED__
??4?#define?ITERATOR_HPP_INCLUDED__
??5?
??6?//this?struct?is?just?employed
??7?//to?keep?the?Type?information
??8?template
??9?<
?10?????typename?Type
?11?>
?12?struct?Type_Keep;
?13?
?14?
?15?//calculate
?16?//??????\sum_{i}?\sin?2?\omega?t_i
?17?template
?18?<
?19?????typename?InputItor,
?20?????typename?Type
?21?>
?22?Type?sin2_accumulate(
?23?????????????????????????InputItor?begin,
?24?????????????????????????InputItor?end,
?25?????????????????????????Type?omega
?26?????????????????????);
?27?
?28?//calculate
?29?//??????\sum_{i}?\cos?2?\omega?t_i
?30?template
?31?<
?32?????typename?InputItor,
?33?????typename?Type
?34?>
?35?Type?cos2_accumulate(
?36?????????????????????????InputItor?begin,
?37?????????????????????????InputItor?end,
?38?????????????????????????Type?omega
?39?????????????????????);
?40?
?41?//calculate
?42?//??????\frac{1}{N}?\sum_{i}?h_i
?43?template
?44?<
?45?????typename?InputItor,
?46?????typename?Type
?47?>
?48?Type?mean(
?49?????????????InputItor?begin,
?50?????????????InputItor?end,
?51?????????????Type_Keep<Type>
?52??????????);
?53?
?54?//calculate
?55?//??????\frac{1}{N-1}?\sum_{i}(h_i?-?h)^{2}
?56?template
?57?<
?58?????typename?InputItor,
?59?????typename?Type
?60?>
?61?Type?variance(
?62?????????????????InputItor?begin,
?63?????????????????InputItor?end,
?64?????????????????Type_Keep<Type>
?65??????????????);
?66?
?67?//calcuate
?68?//???????[\sum_i?(h_i?-?h)?\sin?\omega?(t_i?-?\tau)]^{2}
?69?template
?70?<
?71?????typename?Type,
?72?????typename?InputItor
?73?>
?74?Type?h_sin_square_accumulate(?????InputItor?h_start,?InputItor?h_end,
?75?????????????????????????????????InputItor?t_start,?InputItor?t_end,
?76?????????????????????????????????Type?h,
?77?????????????????????????????????Type?tau,
?78?????????????????????????????????Type?omega
?79?????????????????????????????);
?80?
?81?//calcuate
?82?//???????[\sum_i?(h_i?-?h)?\cos?\omega?(t_i?-?\tau)]^{2}
?83?template
?84?<
?85?????typename?Type,
?86?????typename?InputItor
?87?>
?88?Type?h_cos_square_accumulate(?????InputItor?h_start,?InputItor?h_end,
?89?????????????????????????????????InputItor?t_start,?InputItor?t_end,
?90?????????????????????????????????Type?h,
?91?????????????????????????????????Type?tau,
?92?????????????????????????????????Type?omega
?93?????????????????????????????);
?94?
?95?//calculate
?96?//??????\sum_{i}?\cos?^{2}?\omega?(t_i?-?\tau)
?97?template
?98?<
?99?????typename?Type,
100?????typename?InputItor
101?>
102?Type?cos_square_accumulate(?????InputItor?t_start,
103?????????????????????????????????InputItor?t_end,
104?????????????????????????????????Type?tau,
105?????????????????????????????????Type?omega
106?????????????????????????????);
107?
108?//calculate
109?//??????\sum_{i}?\cos?^{2}?\omega?(t_i?-?\tau)
110?template
111?<
112?????typename?Type,
113?????typename?InputItor
114?>
115?Type?sin_square_accumulate(?????InputItor?t_start,
116?????????????????????????????????InputItor?t_end,
117?????????????????????????????????Type?tau,
118?????????????????????????????????Type?omega
119?????????????????????????????);
120?
121?#include?"iterator.tcc"
122?
123?#endif?//?ITERATOR_HPP_INCLUDED__
124?

?

//iterator.tcc

#include?
<cmath>

template
<
????typename?Type
>
struct?Type_Keep
{
????typedef?Type?T;
};

template
<
????typename?Type
>
struct?Sin
{
????Type?
operator()(?const?Type?val?)const
????{
????????
return?sin(?val?);
????}
};

template
<
????typename?Type
>
struct?Cos
{
????Type?
operator()(?const?Type?val?)const
????{
????????
return?cos(?val?);
????}
};

template
<
????typename?InputItor,
????typename?Type,
????typename?Function
>
static?Type?f2_accumulate(
????????????????????????????InputItor?begin,
????????????????????????????InputItor?end,
????????????????????????????Type?omega,
????????????????????????????Function?f
????????????????????????)
{
????Type?ans?
=?Type();
????
while(?begin?!=?end?)
????{
????????ans?
+=?f(?2.0L?*?omega?*?(*begin++)?);
????}
????
return?ans;
}

template
<
????typename?InputItor,
????typename?Type
>
Type?sin2_accumulate(
????????InputItor?begin,
????????InputItor?end,
????????Type?omega
????????)
{
????
return?f2_accumulate(
????????????????????????????begin,
????????????????????????????end,
????????????????????????????omega,
????????????????????????????Sin
<Type>()
?????????????????????????);
}

template
<
????typename?InputItor,
????typename?Type
>
Type?cos2_accumulate(
????????InputItor?begin,
????????InputItor?end,
????????Type?omega
????????)
{
????
return?f2_accumulate(
????????????????????????????begin,
????????????????????????????end,
????????????????????????????omega,
????????????????????????????Sin
<Type>()
????????????????????????);
}

template
<
????typename?InputItor,
????typename?Type
>
Type?mean(
????????InputItor?begin,
????????InputItor?end,
????????Type_Keep
<Type>
????????)
{
????Type?sum?
=?Type();
????unsigned?
int?cnt?=?0;
????
while?(?begin?!=?end?)
????{
????????sum?
+=?*begin++;
????????
++cnt;
????}

????
return?sum?/?cnt;
}

template
<
????typename?InputItor,
????typename?Type
>
static?Type?diff_square_accumulate(
????????????????????InputItor?begin,
????????????????????InputItor?end,
????????????????????Type?mean
????????????????????)
{
????Type?ans?
=?Type();
????
while(?begin?!=?end?)
????{
????????ans?
+=?(?mean?-?*begin?)?*?(?mean?-?*begin?)?;
????????
++begin;
????}
????
return?ans;
}

template
<
????typename?InputItor
>
static?unsigned?int?difference(
????????????????InputItor?begin,
????????????????InputItor?end
????????????????)
{
????unsigned?
int?cnt?=?0;
????
while(?begin++?!=?end?)
????????
++cnt;

????
return?cnt;
}

template
<
????typename?InputItor,
????typename?Type
>
Type?variance(
????????????InputItor?begin,
????????????InputItor?end,
????????????Type_Keep
<Type>
????????????)
{
????
const?Type?average?=
????????mean(?begin,?end,?Type_Keep
<long?double>()?);
????
const?Type?power?=
????????diff_square_accumulate(?begin,?end,?average?);
????
const?unsigned?int?size?=
????????difference(?begin,?end?);
????
const?Type?ans?=?power?/?(size-1);

????
return?ans;
}

template
<
????typename?Type,
????typename?InputItor,
????typename?Function
>
static?Type?h_f_square_accumulate(?????InputItor?h_start,?InputItor?h_end,
????????????????????????????????????InputItor?t_start,?InputItor?t_end,
????????????????????????????????????Type?h,
????????????????????????????????????Type?tau,
????????????????????????????????????Type?omega,
????????????????????????????????????Function?f
????????????????????????????)
{
????Type?ans?
=?Type();
????
while(?(?h_start?!=?h_end?)?&&?(?t_start?!=?t_end?)?)
????{
????????ans?
+=?(?*h_start++?-?h?)?*?f(?omega?*?(?*t_start++?-?tau)?);
????}
????
return?ans*ans;
}


template
<
????typename?Type,
????typename?InputItor
>
Type?h_sin_square_accumulate(?????InputItor?h_start,?InputItor?h_end,
????????????????????????????????InputItor?t_start,?InputItor?t_end,
????????????????????????????????Type?h,
????????????????????????????????Type?tau,
????????????????????????????????Type?omega
????????????????????????????)
{
????
return?h_f_square_accumulate(
????????????????????????????????????h_start,?h_end,
????????????????????????????????????t_start,?t_end,
????????????????????????????????????h,
????????????????????????????????????tau,
????????????????????????????????????omega,
????????????????????????????????????Sin
<Type>()
????????????????????????????????);
}

template
<
????typename?Type,
????typename?InputItor
>
Type?h_cos_square_accumulate(?????InputItor?h_start,?InputItor?h_end,
????????????????????????????????InputItor?t_start,?InputItor?t_end,
????????????????????????????????Type?h,
????????????????????????????????Type?tau,
????????????????????????????????Type?omega
????????????????????????????)
{
????
return?h_f_square_accumulate(
????????????????????????????????????h_start,?h_end,
????????????????????????????????????t_start,?t_end,
????????????????????????????????????h,
????????????????????????????????????tau,
????????????????????????????????????omega,
????????????????????????????????????Cos
<Type>()
????????????????????????????????);
}

template
<
????typename?Type,
????typename?InputItor,
????typename?Function
>
static?Type?f_square_accumulate(?????InputItor?t_start,
????????????????????????????????????InputItor?t_end,
????????????????????????????????????Type?tau,
????????????????????????????????????Type?omega,
????????????????????????????????????Function?f
????????????????????????????)
{
????Type?ans?
=?Type();
????
while(?t_start?!=?t_end?)
????{
????????
const?Type?tmp?=?f(?omega?*?(?*t_start++?-?tau?)?);
????????ans?
+=?tmp?*?tmp;
????}
????
return?ans;
}

template
<
????typename?Type,
????typename?InputItor
>
Type?cos_square_accumulate(?????InputItor?t_start,
????????????????????????????????InputItor?t_end,
????????????????????????????????Type?tau,
????????????????????????????????Type?omega
????????????????????????????)
{
????
return?f_square_accumulate(
????????????????????????????????????t_start,
????????????????????????????????????t_end,
????????????????????????????????????tau,
????????????????????????????????????omega,
????????????????????????????????????Cos
<Type>()
????????????????????????????????);
}

template
<
????typename?Type,
????typename?InputItor
>
Type?sin_square_accumulate(?????InputItor?t_start,
????????????????????????????????InputItor?t_end,
????????????????????????????????Type?tau,
????????????????????????????????Type?omega
????????????????????????????)
{
????
return?f_square_accumulate(
????????????????????????????????????t_start,
????????????????????????????????????t_end,
????????????????????????????????????tau,
????????????????????????????????????omega,
????????????????????????????????????Sin
<Type>()
????????????????????????????????);
}

?

實例

下面這個例子中,將從文件phi.dat中輸入采樣數據,從文件rem.dat中輸入采樣空間間隔,使用Lomb算法處理后,得到的空間頻譜將輸出到文件spectrum.dat中去

?1?#include?"lomb.hpp"
?2?
?3?#include?<iostream>
?4?#include?<fstream>
?5?#include?<vector>
?6?#include?<iterator>
?7?#include?<algorithm>
?8?
?9?using?namespace?std;
10?
11?int?main()
12?{
13?????ifstream?phi_src(?"phi.dat"?);
14?????ifstream?rem_src(?"rem.dat"?);
15?????ofstream?spectrum_dst(?"spectrum.dat"?);
16?
17?????vector<long?double>?h;
18?????vector<long?double>?t;
19?
20?????copy(?istream_iterator<long?double>(phi_src),?istream_iterator<long?double>(),?back_inserter(t)?);
21?????copy(?istream_iterator<long?double>(rem_src),?istream_iterator<long?double>(),?back_inserter(h)?);
22?
23?????Lomb<long?double>*?lomb?=?new?Lomb<long?double>(?h,?t?);
24?
25?????vector<long?double>?v_spectrum?=?lomb?->?spectrum();
26?????copy(?v_spectrum.begin(),?v_spectrum.end(),?ostream_iterator<long?double>(spectrum_dst,?"\n")?);
27?
28?????delete?lomb;
29?????phi_src.close();
30?????rem_src.close();
31?????spectrum_dst.close();
32?
33?????return?0;
34?}
35?

?

備注

Lomb算法的復雜度是O(n^2),若采樣數據比較長,可以采用fft方法簡化復雜度到O(nlogn),與大數乘法中的fft用法一致,此處不再多說。




posted on 2009-01-02 21:20 Wang Feng 閱讀(2600) 評論(3)  編輯 收藏 引用 所屬分類: Numerical C++

FeedBack:
# re: 非均勻取樣數據的功率譜估計方法
2010-07-09 14:53 | JannieBallard
One knows that men's life seems to be expensive, however some people require money for different things and not every man earns big sums cash. Hence to get fast <a href="http://bestfinance-blog.com/topics/business-loans">business loans</a> and just consolidation loans would be a correct solution.   回復  更多評論
  
# re: 非均勻取樣數據的功率譜估計方法
2010-07-18 01:00 | term paper help
There is nothing unnatural If you buy custom essays from the custom research paper service, however this thing would aid you to complete academic results.   回復  更多評論
  
# re: 非均勻取樣數據的功率譜估計方法
2010-07-21 11:49 | dissertation writing service
Direct on what you are going to do at the time being and tomorrow, and have loyalty that the extent will advance when it is damn well on tap. Or maybe buy thesis is what you need . Thanks.   回復  更多評論
  

<2025年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

Link List

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品乱码久久久久| 久久亚洲精品一区| 久久精品国产久精国产思思| 亚洲欧美国产精品专区久久| 亚洲免费不卡| 99热在线精品观看| 宅男精品导航| 欧美一区二区三区免费观看| 老色批av在线精品| 亚洲电影观看| 99精品视频免费全部在线| 亚洲影院色无极综合| 欧美亚洲一区在线| 蜜月aⅴ免费一区二区三区| 欧美日韩成人综合在线一区二区| 国产精品久久久久久久久搜平片| 国产一区二区三区久久 | 狠狠久久亚洲欧美| 亚洲国产日日夜夜| 亚洲女同同性videoxma| 久久久久久久久一区二区| 欧美aa国产视频| 9l国产精品久久久久麻豆| 欧美中文字幕久久| 欧美日韩国产123| 国产一区二区按摩在线观看| 亚洲精品一区二区三区不| 午夜视频在线观看一区二区| 欧美福利电影在线观看| 亚洲毛片av在线| 久久人人爽人人爽| 国产精品久久久久婷婷| 亚洲国产精品精华液网站| 亚洲一区二区三区在线看| 免费视频一区二区三区在线观看| av成人黄色| 欧美国产精品一区| 精品不卡在线| 欧美一级二级三级蜜桃| 亚洲区第一页| 蜜臀av一级做a爰片久久| 国产日韩欧美另类| 中国日韩欧美久久久久久久久| 老司机午夜精品视频| 一级成人国产| 欧美日韩免费一区二区三区| 在线观看国产精品网站| 久久成人18免费网站| 亚洲美女精品一区| 免费亚洲婷婷| 亚洲国产91精品在线观看| 久久久久免费视频| 香蕉成人伊视频在线观看| 国产精品久久久久高潮| 一区二区三区视频免费在线观看 | 99精品久久| 欧美精品三区| 亚洲精选中文字幕| 亚洲第一伊人| 免费在线亚洲| 亚洲激情一区二区| 亚洲高清在线播放| 欧美国产日产韩国视频| 亚洲精品一二三区| 亚洲肉体裸体xxxx137| 欧美日韩高清在线观看| 亚洲无吗在线| 亚洲欧美经典视频| 国产亚洲精品资源在线26u| 久久aⅴ国产欧美74aaa| 久久国产一区二区| 另类av导航| 亚洲美女区一区| 日韩亚洲精品电影| 国产精品久久久久久久久久ktv | 欧美一区=区| 激情综合色丁香一区二区| 欧美福利视频在线| 欧美日本一区二区视频在线观看| 这里只有视频精品| 亚洲自拍偷拍麻豆| 激情成人av| 91久久精品美女高潮| 欧美精品国产一区| 亚洲欧美国产一区二区三区| 亚洲欧美综合v| 亚洲高清在线观看一区| 亚洲精品欧美激情| 国产手机视频精品| 欧美不卡在线视频| 欧美日韩久久不卡| 久久精品国产久精国产思思| 美女精品在线| 亚洲欧美视频在线观看视频| 欧美在线播放高清精品| 亚洲欧洲在线观看| 亚洲一区二区三区三| 亚洲国产成人av在线| 一区二区三区回区在观看免费视频| 国产欧美日韩免费| 亚洲电影免费| 国产一区二区三区成人欧美日韩在线观看 | 欧美成人精品一区| 国产精品国产三级国产aⅴ入口| 久久久久久亚洲精品杨幂换脸 | 尤妮丝一区二区裸体视频| 亚洲日本欧美天堂| 国产在线国偷精品产拍免费yy| 亚洲精品一区二区三区樱花| 精品不卡一区二区三区| 亚洲午夜精品一区二区| 亚洲免费成人av电影| 久久久久久久综合狠狠综合| 欧美一级播放| 国产精品视频一| 一区二区三区.www| 日韩网站免费观看| 久热成人在线视频| 久久综合色88| 国产日韩欧美视频| 亚洲综合好骚| 香蕉久久夜色| 国产精品麻豆va在线播放| 亚洲人成网站在线播| 亚洲精品国产品国语在线app| 久久久久久999| 美女视频一区免费观看| 精品成人一区二区| 久久99在线观看| 免费h精品视频在线播放| 欧美激情视频网站| 欧美在线视频一区二区| 牛牛国产精品| 久久国产成人| 牛牛精品成人免费视频| 欧美在线观看视频| 欧美另类69精品久久久久9999| 性欧美大战久久久久久久免费观看 | 久久精品99国产精品| 一本色道精品久久一区二区三区 | 欧美一级久久久久久久大片| 一本色道久久综合亚洲精品小说| 亚洲香蕉视频| 午夜精品久久久久久久白皮肤| 欧美日韩亚洲一区二区三区四区| 亚洲福利视频一区二区| 国产亚洲精品久久飘花| 羞羞色国产精品| 欧美一区日韩一区| 国产视频精品免费播放| 午夜精品国产精品大乳美女| 久久国产精品毛片| 国内精品免费午夜毛片| 久久国产精品高清| 欧美高清在线视频| 99精品欧美一区二区三区| 欧美日韩免费视频| 亚洲欧美日产图| 美日韩精品免费观看视频| 亚洲精品网址在线观看| 欧美日韩精品在线观看| 亚洲视频在线观看一区| 久久久久久国产精品一区| 黄网站免费久久| 欧美电影在线| 亚洲一区二区三区免费观看| 久久夜色精品国产欧美乱极品| 亚洲电影天堂av| 欧美区在线播放| 亚洲一区图片| 欧美丰满高潮xxxx喷水动漫| 亚洲视频香蕉人妖| 伊人久久大香线蕉综合热线| 欧美剧在线免费观看网站| 亚洲欧美日韩人成在线播放| 欧美国产欧美综合| 欧美亚洲一区二区在线| 在线精品观看| 国产精品夜色7777狼人| 免费看成人av| 午夜综合激情| 亚洲精品少妇30p| 噜噜噜噜噜久久久久久91| 中文日韩在线| 亚洲国产乱码最新视频| 国产伦精品一区二区三区免费| 免费欧美在线| 一区二区三区色| 亚洲男人av电影| 亚洲黄网站黄| 国产日韩精品久久| 欧美另类视频| 狼狼综合久久久久综合网| 亚洲无亚洲人成网站77777| 亚洲第一页自拍| 久久亚洲综合色| 先锋影音网一区二区| 亚洲视频在线一区| 亚洲精品在线视频观看| 在线精品高清中文字幕|