# 数学函数 / 小波分析 ## `wavedec(x, n, wname)` 声明:function 使用给定的小波wname进行一维多尺度离散小波分析,返回信号xin在n层上的小波分解。输出分解结构包含小波分解向量C和相应的记录向量L | 参数 | 类型 | 说明 | | ------- | ------- | ------------------------ | | `x` | array | 一维序列,一维数字数组 | | `n` | integer | 小波分解层数,正整数 | | `wname` | string | 基础小波函数,字符串类型 | 返回:array ### 示例 范例01:提取近似系数 ```tsl setSysParam(PN_Stock(), "SH000300"); setSysParam(pn_date(), intToDate(20120731)); close300 := nDay(800, "时间", dateTimeToStr(sp_time(1)), "收盘价", close()); close3 := close300[:, "收盘价"]; return wave := wavedec(close3, 3, "db3"); // 输出:结果格式: // 第一行是小波分解向量C,第二行是相应的记录向量L // 下面我们从图像来直接看看小波分解: // 原始序列: // 原始序列可分解成: ``` ## `wavelet(s, wname, n, options)` 声明:function 一维序列小波消噪 | 参数 | 类型 | 说明 | | --------- | ------- | ------------------------------------------------------------- | | `s` | array | 一维序列,一维数字数组 | | `wname` | string | 基础小波函数,字符串类型,取值参考[Wavedec]函数的wname输入参数 | | `n` | integer | 小波分解层数,正整数 | | `options` | array | 方法选项 | 返回:array ### 示例 ```tsl s := array(2484.83, 2479.05, 2482.34, 2437.79, 2447.75, 2512.96, 2443.06, 2433.16, 2393.18, 2415.05, 2392.06, 2365.34, 2359.22, 2344.79, 2348.52, 2420.00, 2438.79, 2431.38, 2440.4, 2383.49, 2377.51, 2331.37, 2317.27, 2370.33, 2409.67, 2427.48, 2435.61, 2473.41, 2468.25, 2470.02, 2504.11, 2508.09, 2528.29, 2509.8, 2503.84, 2524.92, 2479.54, 2481.08, 2528.71, 2529.76, 2466.96, 2463.05, 2416.56, 2415.13, 2412.62, 2395.06, 2397.55, 2380.22, 2383.03, 2412.39, 2333.41, 2386.86, 2360.66, 2333.23, 2325.91, 2332.73, 2329.82, 2315.27, 2291.54, 2248.59, 2228.52, 2180.9, 2224.84, 2218.24, 2215.93, 2191.15, 2186.3, 2204.78, 2190.11, 2166.21, 2170.01, 2173.56, 2199.42, 2169.39, 2148.45, 2163.4, 2225.89, 2285.74, 2276.05, 2275.01, 2244.58, 2206.19, 2298.38, 2266.38, 2296.07, 2319.12, 2285.04, 2292.61, 2268.08, 2312.56, 2330.41, 2331.14, 2291.9, 2347.53, 2349.59, 2351.98, 2351.85, 2344.77, 2366.7, 2356.86, 2357.18, 2363.6, 2381.43, 2403.59, 2409.55, 2439.63, 2447.06, 2451.86, 2428.49, 2426.11, 2460.69); n := 2; wname := "db14"; options := array('brief': 1, 'sigma': 0, 'which': 1, 'alpha': 2, "thr": 0, 'sorh': 's'); return s|wavelet(s, wname, n, options); // 消噪和原始数据对比: ``` ## `wrcoef(o, c, l, wname, n)` 声明:function 一维离散小波单支重构,小波分析,小波重构中间函数或者细节系数(高频)提取 | 参数 | 类型 | 说明 | | ------- | ------- | ------------------------------------------------------------- | | `o` | string | 为字符串类型,'a' 一维离散小波单支重构,'d' 细节系数提取 | | `c` | array | 小波分解向量C,数组类型,参考[Wavedec]函数的输出 | | `l` | array | 相应的记录向量L,数组类型,参考[Wavedec]函数的输出 | | `wname` | string | 基础小波函数,字符串类型,取值参考[Wavedec]函数的wname输入参数 | | `n` | integer | 小波分解层数,正整数 | 返回:array ### 示例 ```tsl setSysParam(PN_Stock(), "SH000300"); setSysParam(pn_date(), intToDate(20120731)); close300 := nDay(800, "时间", dateTimeToStr(sp_time(1)), "收盘价", close()); close3 := close300[:, "收盘价"]; wave := wavedec(close3, 3, "db3"); c := wave[0]; l := wave[1]; return wrcoef('a', c, l, 'db3', 3); ``` 范例02:提取第三层细节系数 ```tsl setSysParam(PN_Stock(), "SH000300"); setSysParam(pn_date(), intToDate(20120731)); close300 := nDay(800, "时间", dateTimeToStr(sp_time(1)), "收盘价", close()); close3 := close300[:, "收盘价"]; wave := wavedec(close3, 3, "db3"); c := wave[0]; l := wave[1]; return wrcoef('d', c, l, 'db3', 3); ```