 |
CoifletWavelet example of Wavelet using Smile
Source code name: "CoifletWaveletDemo.java"
Programming language: Java
Topic: Signal Processing/Wavelets
DMelt Version 2.2. Last modified: 03/09/1972. License: Pro
https://datamelt.org/code/cache/CoifletWaveletDemo_3342.java
To run this script using the DMelt IDE,
copy the above URL link to the menu [File]→[Read script from URL] of the DMelt IDE.
/*******************************************************************************
* Copyright (c) 2010 Haifeng Li
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import smile.plot.LinePlot;
import smile.plot.PlotCanvas;
import smile.wavelet.CoifletWavelet;
import smile.wavelet.Wavelet;
import smile.wavelet.WaveletShrinkage;
/**
*
* @author Haifeng Li
*/
@SuppressWarnings("serial")
public class CoifletWaveletDemo extends JPanel {
public CoifletWaveletDemo() {
super(new GridLayout(3,2));
setBackground(Color.WHITE);
for (int i = 6; i <= 30; i+=6) {
double[] x = new double[1024];
x[3] = 1.0;
Wavelet wavelet = new CoifletWavelet(i);
wavelet.inverse(x);
PlotCanvas canvas = LinePlot.plot(x);
canvas.setTitle(String.format("C%d", i));
add(canvas);
}
double[] sp500 = {
1103.96, 1107.84, 1114.11, 1108.61, 1106.36, 1097.86, 1105.31,
1114.51, 1118.84, 1121.08, 1127.53, 1128.55, 1125.53, 1126.60,
1116.56, 1132.66, 1135.71, 1136.27, 1140.52, 1145.96, 1143.81,
1137.31, 1145.68, 1147.72, 1136.03, 1147.95, 1138.68, 1115.49,
1092.40, 1095.80, 1091.94, 1096.93, 1087.61, 1073.89, 1090.05,
1100.67, 1097.25, 1064.12, 1065.51, 1060.06, 1069.68, 1067.10,
1075.95, 1079.13, 1096.14, 1099.03, 1105.49, 1110.00, 1107.49,
1095.89, 1101.24, 1103.10, 1105.36, 1117.01, 1119.36, 1119.12,
1125.12, 1138.40, 1137.56, 1140.22, 1143.96, 1151.71, 1148.53,
1150.83, 1159.94, 1166.13, 1166.68, 1157.25, 1166.47, 1172.70,
1170.03, 1167.58, 1167.71, 1173.75, 1171.75, 1171.23, 1178.71,
1186.01, 1188.23, 1181.75, 1187.47, 1194.94, 1195.94, 1198.69,
1210.77, 1210.17, 1192.06, 1199.04, 1207.16, 1202.52, 1207.87,
1217.07, 1209.92, 1184.59, 1193.30, 1206.77, 1188.58, 1197.50,
1169.24, 1164.38, 1127.04, 1122.27, 1156.39, 1155.43, 1170.04,
1157.19, 1136.52, 1138.78, 1119.57, 1107.34, 1067.26, 1084.78,
1067.42, 1075.51, 1074.27, 1102.59, 1087.30, 1073.01, 1098.82,
1098.43, 1065.84, 1050.81, 1062.75, 1058.77, 1082.65, 1095.00,
1091.21, 1114.02, 1115.98, 1116.16, 1122.79, 1113.90, 1095.57,
1090.93, 1075.10, 1077.50, 1071.10, 1040.56, 1031.10, 1027.65,
1028.09, 1028.54, 1062.92, 1070.50, 1077.23, 1080.65, 1095.61,
1094.46, 1093.85, 1066.85, 1064.53, 1086.67, 1072.14, 1092.17,
1102.89, 1117.36, 1112.84, 1108.07, 1098.44, 1107.53, 1125.34,
1121.06, 1125.78, 1122.07, 1122.80, 1122.92, 1116.89, 1081.48,
1082.22, 1077.49, 1081.16, 1092.08, 1092.44, 1075.63, 1073.36,
1063.20, 1048.98, 1056.28, 1049.27, 1062.90, 1046.88, 1049.72,
1080.66, 1093.61, 1102.60, 1092.36, 1101.15, 1104.57, 1113.38,
1121.16, 1119.43, 1123.89, 1126.39, 1126.57, 1142.82, 1139.49,
1131.10, 1131.69, 1148.64, 1142.31, 1146.75, 1145.97, 1143.49,
1144.96, 1140.68, 1159.81, 1161.57, 1158.36, 1165.32, 1164.28,
1171.32, 1177.82, 1177.47, 1176.83, 1178.64, 1166.74, 1179.82,
1180.52, 1184.74, 1184.88, 1183.84, 1184.47, 1183.87, 1185.71,
1187.86, 1193.79, 1198.34, 1221.20, 1223.24, 1223.59, 1213.14,
1213.04, 1209.07, 1200.44, 1194.79, 1178.33, 1183.75, 1196.12,
1198.07, 1192.51, 1183.70, 1194.16, 1189.08, 1182.96, 1186.60,
1206.81, 1219.93, 1223.87, 1227.25, 1225.02, 1230.14, 1233.85,
1242.52, 1241.84, 1241.58, 1236.34
};
PlotCanvas canvas = LinePlot.plot(sp500);
double[] smooth = sp500.clone();
WaveletShrinkage.denoise(smooth, new CoifletWavelet(6));
canvas.line(smooth, Color.BLUE);
canvas.setTitle("S&P 500");
add(canvas);
}
@Override
public String toString() {
return "Coiflet";
}
public static void main(String[] args) {
JFrame frame = new JFrame("Coiflet Wavelet");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.add(new CoifletWaveletDemo());
frame.setSize(600,400);
frame.setVisible(true);
}
}
You see the box below because you did not login.