找回密码
 立即注册
搜索
查看: 114|回复: 0

代码无法运行?下载完整程序包尝试!探究混沌学中的气候系统

[复制链接]

2万

主题

0

回帖

6万

积分

管理员

积分
60588
发表于 2024-11-17 23:04:33 | 显示全部楼层 |阅读模式
如果代码无法运行,请下载完整包并尝试运行。

链接:esmd包

提取码:zzl8

介绍

20世纪60年代,著名气象学家洛伦兹提出了著名的“蝴蝶效应”。这一混沌概念一经发表,就引起了广泛关注,成为当今最著名的科学概念之一。

混沌——指的是确定性系统中发生的看似随机的不规则运动。由确定性理论描述的系统,但其行为具有不确定性的特征——不可重复和不可预测。这被证明是非线性动态系统所固有的特性。

气候系统作为典型的混沌非线性系统,其研究和预测存在很多不确定性。对于混沌系统的研究,我们试图在无序中找到秩序。相应地,在气候方面,我们需要找到气候变化的趋势和跳跃。

气候系统的特征除了非线性和非平稳性外,还具有层次性。这意味着一个地区的气候变化往往是由多个层面的变化叠加造成的。也就是说,一个地区的气候变化是由气候周期、大尺度环流、小尺度人类影响等多重因素共同决定的。

同样的气象数据也是一组非线性、非平稳的时间序列,引起变化的物理机制尚不清楚。对于这类随机数据,我们需要将其分解为不同的频率模式,找到可能的变化模式,并探索不同模式的物理机制。

在模态分解算法中,常用频谱分析方法,并衍生了三代信号处理技术。

第一代:谱分析:预先给出基函数(三角函数)

第二代:分析:预先给定基函数(小波、墨西哥帽小波)

第三代:HHT方法:基函数来自数据本身(让数据说话

我们即将介绍的EMD和ESMD方法是基于第三代HHT开发的。

EMD 及其局限性

-黄变换(EMD)是一种数据自适应处理方法,不需要预定的基函数或窗口长度。其分解方式既变频率又变幅度,适用于非线性、非平稳信号。

所谓数据自适应是指根据数据本身的时间尺度特征来分解信号,而不需要预先设定任何基函数。这一点与基于先验调和基函数和小波基函数的傅里叶分解和小波分解方法有着本质的区别。因此,理论上它可以应用于任何类型的信号分解。

即:任何复杂的数据都可以使用EMD方法分解为有限数量的周期性振荡分量/特征函数(IMF:众数);变换后可产生瞬时频率(

)。

从物理上讲,如果瞬时频率要有意义,则该函数必须是对称的,局部均值为零,并且具有相同数量的零交叉和极值点。在此基础上,黄等人。提出了内在模函数(Mode,简称IMF)的概念。本征模函数任意点的瞬时频率都是有意义的。黄等人。相信任何信号都是由多个本征模函数组成。在任何时候,一个信号都可以包含多个本征模函数。如果本征模函数相互重叠,就会形成复合信号。 EMD分解的目的是获得特征模函数,然后对每个特征模函数进行变换以获得频谱。 (EMD方法的基础知识)

内在函数(IMF)满足两个条件:

1、数据中极值的个数和0点的个数必须相等或最多相差1个;

2. 在任意点,由局部极大值和极小值组成的两点

包络线的平均值为 0。(Huang et al. 1998)

听起来很抽象。我简单解释一下:

首先,包络线()是几何学中的一个概念,它是指一条曲线与某个曲线族中的每条直线至少有一个切点(一个曲线族是无限的曲线集合,它们之间有一些特定的关系) )

在EMD算法中,通过三次样条插值(三次线)连接极值点,连接极大点形成上包络线(上),连接极小点形成下包络线,从而形成上下包络线。网络线(下)。

首先画出数据的上下包络线

根据上下包络线画出平均包络线

原始信号减去平均包络得到中间信号

判断得到的信号是否满足IMF的两个条件。如果是,则接受它并将其视为 IMF。如果没有,请重复上述步骤。使用上述方法得到第一个IMF后,将原始信号减去IMF1作为新信号。原始信号,再通过1)~4)的分析,即可得到IMF2,依此类推,完成EMD分解。

上述过程称为()

(参考EMD基本理论)

停止 EMD 的标准:

停止标准决定了生成固有模态函数(IMF)的筛选过程的执行次数。请参考EMD浅谈

同样的 EMD 也有一些局限性,包括:

为了解决EMD中的模态混叠(mode)混叠问题,EMD方法的提出者建立了集成经验模态分解(mode,EEMD)方法。基本思想是在原始信号中多次添加白噪声以进行 EMD。分解并平均。由于模态是多次噪声相加的结果,因此对扰动不敏感,被认为是可分解且稳定的,用于理解物理现象。然而,直接添加噪声通常会导致不良结果,甚至污染信号。对此,EMD有了新的发展——ESMD,它是由青岛理工大学理学院王金良和李宗军两位老师联合开发的。

ESMD 原则和流程

ESMD借鉴了EMD的思想,将外部包络插值改为内部极点对称插值。可以分为两部分

模态分解(ESMD),获得模态时频分析,得到各模态的时变特性

ESMD的算法流程如下(我画的):

结果与 EMD 类似,将原始序列分解为经验模态和剩余变量 (X=ΣMi+R)

ESMD 中的停止准则比 EMD 中的更简单,借用了“最小二乘法”

​​​​利用“乘”的思想来优化最后剩下的模式,使其成为整个数据

“自适应全局移动平均线”,从而确定最佳放映次数。当筛选次数达到最优值时,停止迭代筛选。

时频分析过程如下:

放弃传统的积分变换概念,对数据采用“直接插值法”,直观地反映各模态幅度和频率的时间变化性。步骤如下:

找到极值点,计算相邻两个最大点和相邻最小点的时间差;将这些时间段视为本地时间段,并将其分配到其中点,并绘制时间段对应点图;将这些结合起来,取局部周期值的倒数得到局部频率,然后进行三次样条插值,得到平滑的时频曲线。

所有积分变换,包括变换,在分析时频变化时都具有固有的缺陷。然而,ESMD抛弃了谱分析依赖积分变换的传统理念,创造性地提出了数据的“直接插值(DI)方法”。

关于变换的局限性,理论相对复杂。这是ESMD方法作者书中的一句话:

事实上,不管怎样,它都是一个意思。既然已经完成了,为什么不从 a 中的数据中获取呢?

简单来说,目前频率变换的方法基本上都是计算平均周期(频率)的基本过零法(零-),但不能很好地处理瞬时变化,即时间分辨率较低。

为此,ESMD提出了一种(直接插值)方法来计算瞬时频率。

综上所述,从理论分析来看,ESMD方法在发现变化趋势、异常诊断、时频分析、能量变化等方面具有良好的优势。

ESMD应用

与EEMD方法相比,ESMD方法的应用较少,但其应用前景仍然广阔,可用于气候、海洋等领域。以下是一些示例:

海气通量研究

海气通量观测是气象观测的重要组成部分。在边界层中,湍流可以分解为雷诺分解:



当稳定时,可表示为:

然而,大多数时候观察到非平稳信号,在这种情况下波动包含非湍流分量

此时:

红圈部分就是我们要提取的湍流通量,尝试使用ESMD方法对其进行分解。

前五种模态是我们需要的湍流分量,需要根据经验和物理机制(−5/3幂律)进行判断。

合成后模式1-5的傅里叶谱与原始信号的对比:

降水特征分析

数据:1951年至2015年北京月降水量数据,变化如下:

不同的模式对应于方差和周期:

谱分析可以用来观察每种模式的突变点。

径流预报

径流预测通常采用-的组合模型进行预测,即采用模态分解+预测的组合方法。流程如下:

比较各种方法的准确率,可以发现ESMD的误差最小:

代码

<p><pre>    <code class="prism language-c"><span class="token function">disp</span><span class="token punctuation">(</span><span class="token char">&#39;It is running. Please wait ...&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
clear all<span class="token punctuation">;</span>
<span class="token function">javaaddpath</span><span class="token punctuation">(</span>pwd<span class="token punctuation">)</span><span class="token punctuation">;</span>
esmd<span class="token operator">=</span> esmd4j<span class="token punctuation">.</span><span class="token function">Esmd</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">%</span> load data
data<span class="token operator">=</span><span class="token function">load</span><span class="token punctuation">(</span><span class="token char">&#39;winddata.txt&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
Y<span class="token operator">=</span><span class="token function">data</span><span class="token punctuation">(</span><span class="token operator">:</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">delt_t</span> <span class="token operator">=</span> <span class="token number">0.05</span><span class="token punctuation">;</span> <span class="token operator">%</span> sampling period
t<span class="token operator">=</span>esmd<span class="token punctuation">.</span><span class="token class-name">init_t</span><span class="token punctuation">(</span><span class="token function">length</span><span class="token punctuation">(</span>Y<span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token class-name">delt_t</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">%</span>parameters setting<span class="token operator">:</span>
minLoop<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span>
maxLoop<span class="token operator">=</span><span class="token number">40</span><span class="token punctuation">;</span>
extremeNumR<span class="token operator">=</span><span class="token number">4</span><span class="token punctuation">;</span> <span class="token operator">%</span> <span class="token operator">>=</span><span class="token number">4</span>
jianGeNum <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> <span class="token operator">%</span>
rList <span class="token operator">=</span> esmd<span class="token punctuation">.</span><span class="token function">getVarianceRatio</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> Y<span class="token punctuation">,</span> minLoop<span class="token punctuation">,</span> maxLoop<span class="token punctuation">,</span> extremeNumR<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">[</span>minVar<span class="token punctuation">,</span>idx<span class="token punctuation">]</span><span class="token operator">=</span><span class="token function">min</span><span class="token punctuation">(</span>rList<span class="token punctuation">)</span><span class="token punctuation">;</span>
optLoop<span class="token operator">=</span>idx<span class="token operator">+</span>minLoop<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>
<span class="token function">disp</span><span class="token punctuation">(</span><span class="token char">&#39;optimal loop is: &#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">fprintf</span><span class="token punctuation">(</span><span class="token char">&#39;optLoop=%d\n&#39;</span><span class="token punctuation">,</span>optLoop<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">%</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">-</span>
x<span class="token operator">=</span>minLoop<span class="token operator">:</span>maxLoop<span class="token punctuation">;</span>
<span class="token function">figure</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
<span class="token function">plot</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span>rList<span class="token punctuation">)</span>
</code></pre></p>
<p><pre>    <code class="prism language-c"><span class="token operator">%</span>parameters setting<span class="token operator">:</span>
esmd<span class="token punctuation">.</span><span class="token function">getSift</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> Y<span class="token punctuation">,</span> optLoop<span class="token punctuation">,</span> extremeNumR<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">%</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">-</span>
len <span class="token operator">=</span> esmd<span class="token punctuation">.</span>yImfsR<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">figure</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
<span class="token keyword">for</span> i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">:</span>len


        <span class="token function">subplot</span><span class="token punctuation">(</span>len<span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token function">plot</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> esmd<span class="token punctuation">.</span>yImfsR<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>i<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token operator">%</span><span class="token function">xlabel</span><span class="token punctuation">(</span><span class="token char">&#39;t&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">if</span> i<span class="token operator">==</span><span class="token number">1</span>
                <span class="token function">ylabel</span><span class="token punctuation">(</span><span class="token char">&#39;Y&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        elseif i<span class="token operator">==</span>len
                <span class="token function">ylabel</span><span class="token punctuation">(</span><span class="token char">&#39;R&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">else</span>
                <span class="token function">ylabel</span><span class="token punctuation">(</span><span class="token function">strcat</span><span class="token punctuation">(</span><span class="token char">&#39;Imf&#39;</span><span class="token punctuation">,</span><span class="token function">num2str</span><span class="token punctuation">(</span>i<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        end
end
<span class="token operator">%</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">-</span>
len<span class="token operator">=</span>esmd<span class="token punctuation">.</span>interfs<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">figure</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span>
<span class="token operator">%</span>frequency distribution figure
<span class="token keyword">for</span> i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">:</span>len
        <span class="token function">plot</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span>esmd<span class="token punctuation">.</span>interfs<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>i<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
        hold on
end
<span class="token operator">%</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">-</span>
<span class="token function">figure</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">)</span>
<span class="token operator">%</span>frequency Amplitude figure
<span class="token keyword">for</span> i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">:</span>len
        <span class="token function">subplot</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token operator">*</span>len<span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token operator">*</span>i<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span>
        <span class="token function">plot</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span>esmd<span class="token punctuation">.</span>interfs<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>i<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
        <span class="token function">ylabel</span><span class="token punctuation">(</span><span class="token function">strcat</span><span class="token punctuation">(</span><span class="token char">&#39;F&#39;</span><span class="token punctuation">,</span><span class="token function">num2str</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
        <span class="token function">subplot</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token operator">*</span>len<span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token operator">*</span>i<span class="token punctuation">)</span>
        <span class="token function">plot</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span>esmd<span class="token punctuation">.</span>upperEvelops<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>i<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
        <span class="token function">ylabel</span><span class="token punctuation">(</span><span class="token function">strcat</span><span class="token punctuation">(</span><span class="token char">&#39;A&#39;</span><span class="token punctuation">,</span><span class="token function">num2str</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
end
<span class="token operator">%</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">-</span>
<span class="token function">figure</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span>
<span class="token operator">%</span>AdaptGlobalMeanCurve on Y
len <span class="token operator">=</span> esmd<span class="token punctuation">.</span>yImfsR<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">plot</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span>Y<span class="token punctuation">)</span><span class="token punctuation">;</span>
hold on<span class="token punctuation">;</span>
R<span class="token operator">=</span>esmd<span class="token punctuation">.</span>yImfsR<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>len<span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">plot</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span>R<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token operator">%</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">-</span>
<span class="token function">figure</span><span class="token punctuation">(</span><span class="token number">6</span><span class="token punctuation">)</span>
<span class="token operator">%</span>plot Y<span class="token operator">-</span>R  
<span class="token function">plot</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span>Y<span class="token operator">-</span>R<span class="token punctuation">)</span>
<span class="token operator">%</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">-</span>
<span class="token function">figure</span><span class="token punctuation">(</span><span class="token number">7</span><span class="token punctuation">)</span>
<span class="token function">plot</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span>esmd<span class="token punctuation">.</span>energy<span class="token punctuation">)</span>
<span class="token operator">%</span>clear all<span class="token punctuation">;</span>
<span class="token operator">%</span><span class="token function">javarmpath</span><span class="token punctuation">(</span>pwd<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></p>
先运行代码1,根据输出图进行设置,或者取默认值,然后运行代码2。

总结

总体而言,ESMD方法是EMD方法的新发展,它在理论上解决了EMD方法的一些局限性,并且与更常用的EEMD方法相比具有不同的优势。

但这种方法比较冷门,目前应用很少。可以作为一种新的方法来理解和尝试。

笔者认为,统计和算法永远只是工具,沉迷于理论研究并不是气象研究者的工作。注重应用,在应用过程中探索物理机制和原理,是气象工作者的宗旨。

参考文献 JL Wang and ZJ Li., “-Point Mode for Data”, Vol.5,2013.Li, H.-F., Wang, J.-L.和Li,Z.-J。 (2013) ESMD 对海气通量的影响。 , 4, 8-11. 李亦珍, 岳春芳;以及非基于ESMD模型的。水 2020 年 6 月 1 日; 20(4):1439-1452。段志鹏,李继清。基于极对称模态分解的北京降水特征分析[J].中国农村水利水电,2018(03):17-21。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|【智道时空】 ( 京ICP备20013102号-16 )

GMT+8, 2025-5-7 12:29 , Processed in 0.065712 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表