Розробка програми фільтраціі шуму за допомогою сплайнів

Методи первинної обробки даних - згладжування та характеристика сплайнів. Загальна характеристика об'єктно-орієнтованої мови Java. Принципи побудови графічного інтерфейсу. Розробка алгоритму програми та інтерфейсу користувача програмного продукту.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 10.10.2013
Размер файла 3,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

package splain;

import Jama.Matrix;

import java.awt.Color;

import java.awt.Dimension;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.text.NumberFormat;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import org.jfree.chart.ChartPanel;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.axis.NumberAxis;

import org.jfree.chart.plot.XYPlot;

import org.jfree.chart.renderer.xy.XYSplineRenderer;

import org.jfree.data.xy.XYSeries;

import org.jfree.data.xy.XYSeriesCollection;

import org.jfree.ui.RectangleInsets;

/**

* Spline

*

* @version 1.1 30 May 2013

* @author Rimma Berdo

*/

public class Spline {

Splain spl;

public Spline(Splain spl) {

this.spl = spl;

n = (spl.coord.size()) / 2;

}

private Matrix A;

private Matrix B;

private Matrix C;

private int n;

private int i;

private int j;

private PrintWriter out;

private double[] S;

private int l;

private double delta;

private java.io.File f;

/**

* create matrix A

*/

public Matrix InitializationA() {

double[][] M = new double[n][n];

for (i = 0; i < n; i++) {

for (j = 0; j < n; j++) {

if (i == j) {

M[i][j] = 4;

}

if ((i - j) == 1) {

M[i][j] = 1;

}

if ((j - i) == 1) {

M[i][j] = 1;

}

if ((i - j) == n - 1) {

M[i][j] = 1;

}

if ((j - i) == n - 1) {

M[i][j] = 1;

}

}

}

return new Matrix(M);

}

/*

* solve of spline

*/

public String Solve() {

A = InitializationA();

PrintMatrix(A, "Matrix A.txt");

A = A.inverse();

PrintMatrix(A, "Matrix inverse.txt");

B = InitializationB();

B = B.timesEquals(6.0);

PrintMatrix(B, "Multiply.txt");

C = A.times(B);

String nameFileReturn = f + System.getProperty("file.separator") + "Matrix C.txt";

double[][] old = C.getArray(); //old massiv C

double[][] newC = new double[n+4][old[0].length];

for (i = 0; i < n; i++) {

for (j = 0; j < old[0].length; j++) {

newC[i + 2][j] = old[i][j];

}

}

for (j = 0; j < old[0].length; j++) {

newC[0][j] = newC[n][j];

newC[1][j] = newC[n + 1][j];

newC[n + 2][j] = newC[2][j];

newC[n + 3][j] = newC[3][j];

}

Matrix Cnew = new Matrix(newC);

PrintMatrix(Cnew, "Matrix C.txt");

double h = 1;

j=0;

double[] z1 = new double[n];

double[] z2 = new double[n];

double[] z3 = new double[n];

double[] z4 = new double[n];

int q = 0; //индекс массивов z

for (i = 1; i < n + 1; i++) {

z1[q] = (newC[i+2][j] + 4 * newC[i+1][j] + newC[i][j]) / 6;

z2[q] = (newC[i+2][j] - newC[i][j]) / (2 * h);

z3[q] = (newC[i+2][j] - 2 * newC[i+1][j] + newC[i][j]) / (2 * h * h);

z4[q] = (newC[i+3][j]-3*newC[i+2][j]+3*newC[i+1][j]-newC[i][j])/(6*h*h*h);

q++;

}

PrintMassiv("Z1.txt", n, z1);

PrintMassiv("Z2.txt", n, z2);

PrintMassiv("Z3.txt", n, z3);

PrintMassiv("Z4.txt", n, z4);

double t;

int k;

String input = JOptionPane.showInputDialog("Скільки проміжних значень на кожному інтервалі Ви хочете взяти для обчислення сплайну?");

l = Integer.parseInt(input);

S = new double[n*(l+1)];

delta = (spl.x[2]-spl.x[1])/l;

for(i=0; i<n; i++){

for (j = 0; j < l+1; j++){

t = j * delta;

k = (l+1) * i +j;

S[k] = z1[i] + z2[i]*t + z3[i]*t*t + z4[i]*t*t*t;

}

}

PrintMassiv("S.txt", n*(l+1), S);

createGraphic();

return nameFileReturn;

}

/*

* инициализация массива-столба y

*/

public Matrix InitializationB() {

double[] N = new double[n];

for (i = 0; i < n; i++) {

N[i] = spl.y[i];

}

return new Matrix(N, n);

}

/*

* input matrix in file

*/

public void PrintMatrix(Matrix mas, String name) {

NumberFormat nf = NumberFormat.getInstance();

f = new java.io.File(System.getProperty("user.dir") + System.getProperty("file.separator") + "SplineMethod");

f.mkdir();

try {

int row = mas.getRowDimension();

int col = mas.getColumnDimension();

out = new PrintWriter(new BufferedWriter(new FileWriter(f + System.getProperty("file.separator") + name)));

for (i = 0; i < row; i++) {

for (j = 0; j < col; j++) {

out.print(nf.format(mas.get(i, j)));

out.print(" ");

}

out.println();

}

out.flush();

} catch (IOException ex) {

ex.getMessage();

}

}

/**

* print all masivs

*/

public void PrintMassiv(String name, int r, double[] a) {

java.io.File f = new java.io.File(System.getProperty("user.dir") + System.getProperty("file.separator") + "SplineMethod");

f.mkdir();

NumberFormat nf = NumberFormat.getInstance();

try {

out = new PrintWriter(new BufferedWriter(new FileWriter(f + System.getProperty("file.separator") + name)));

for (j = 0; j < r; j++) {

out.print(nf.format(a[j]));

out.println();

}

out.flush();

} catch (IOException ex) {

ex.getMessage();

}

}

private void createGraphic(){

JFrame frame = new JFrame("Графік сплайну");

frame.setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);

frame.setPreferredSize(new Dimension(682, 565));

frame.setIconImage(new ImageIcon("src/graphics/graph.png").getImage());

XYSeries series = new XYSeries("Вхідні дані");

XYSeries series2 = new XYSeries("Отримані дані");

double[] t = new double[(n+l*(n-1))+l];

t[0] = spl.x[0];

for (i = 1; i < (n+l*(n-1))+l; i++) {

t[i] = t[i-1] + delta;

}

for (i = 0; i < n; i++) {

series.add(spl.x[i], spl.y[i]);

}

for (i = 0; i < n*(l+1); i++) {

series2.add(t[i], S[i]);

}

XYSeriesCollection data = new XYSeriesCollection();

data.addSeries(series);

data.addSeries(series2);

NumberAxis numberaxis = new NumberAxis("X");

numberaxis.setAutoRangeIncludesZero(false);

NumberAxis numberaxis1 = new NumberAxis("Y");

numberaxis1.setAutoRangeIncludesZero(false);

XYSplineRenderer xysplinerenderer = new XYSplineRenderer();

XYPlot xyplot = new XYPlot (data, numberaxis, numberaxis1, xysplinerenderer);

xyplot.setBackgroundPaint(Color.lightGray);

xyplot.setDomainGridlinePaint(Color.white);

xyplot.setRangeGridlinePaint(Color.white);

xyplot.setAxisOffset(new RectangleInsets(4, 4, 4, 4));

JFreeChart jfreechart = new JFreeChart("Сплайн", JFreeChart.DEFAULT_TITLE_FONT, xyplot, true);

ChartUtilities.applyCurrentTheme(jfreechart);

ChartPanel chartPanel = new ChartPanel(jfreechart);

frame.setContentPane(chartPanel);

frame.pack();

frame.setVisible(true);

}

}

SplineOpen.java

package splain;

import Jama.Matrix;

import java.awt.Color;

import java.awt.Dimension;

import java.io.*;

import java.text.NumberFormat;

import java.util.ArrayList;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import org.jfree.chart.ChartPanel;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.axis.NumberAxis;

import org.jfree.chart.plot.XYPlot;

import org.jfree.chart.renderer.xy.XYSplineRenderer;

import org.jfree.data.xy.XYSeries;

import org.jfree.data.xy.XYSeriesCollection;

import org.jfree.ui.RectangleInsets;

/**

* SplineOpen

*

* @version 1.1 30 May 2013

* @author Rimma Berdo

*/

public class SplineOpen {

Splain spl;

public SplineOpen(Splain spl){

this.spl = spl;

}

private ArrayList<Double> coordSp;

private Matrix A;

private Matrix B;

private Matrix C;

private int b;

private int i;

private int j;

private PrintWriter out;

private double[] S, xSp, ySp;

private int l;

private double delta;

private java.io.File f;

/**

* create matrix A

*/

public Matrix InitializationA() {

double[][] M = new double[b][b];

for (i = 0; i < b; i++) {

for (j = 0; j < b; j++) {

if (i == j) {

M[i][j] = 4;

}

if ((i - j) == 1) {

M[i][j] = 1;

}

if ((j - i) == 1) {

M[i][j] = 1;

}

if ((i - j) == b - 1) {

M[i][j] = 1;

}

if ((j - i) == b - 1) {

M[i][j] = 1;

}

}

}

return new Matrix(M);

}

/*

* solve of spline

*/

public String Solve() {

coordSp = new ArrayList<>();

try {

BufferedReader in =

new BufferedReader(new FileReader(spl.choose));

String line;

while ((line = in.readLine()) != null) {

String[] tmp = line.split(";");

coordSp.add(Double.parseDouble(tmp[0]));

coordSp.add(Double.parseDouble(tmp[1]));

}

} catch (IOException ex) {

ex.getLocalizedMessage();

JOptionPane.showMessageDialog(null, "I/O Error!");

} catch (NullPointerException e) {

JOptionPane.showMessageDialog(null, "File not found!");

}

int jx = -1;

int jy = -1;

b = coordSp.size()/2;

xSp = new double[b];

ySp = new double[b];

for (i = 0; i<coordSp.size(); i++){

System.out.println(coordSp.get(i));

}

for (i = 0; i < coordSp.size(); i++) {

if ((i % 2) == 0) {

jx++;

xSp[jx] = coordSp.get(i);

} else {

jy++;

ySp[jy] = coordSp.get(i);

}

}

A = InitializationA();

PrintMatrix(A, "Matrix A.txt");

A = A.inverse();

PrintMatrix(A, "Matrix inverse.txt");

B = InitializationB();

B = B.timesEquals(6.0);

PrintMatrix(B, "Multiply.txt");

C = A.times(B);

String nameFileReturn = f + System.getProperty("file.separator") + "Matrix C.txt";

double[][] old = C.getArray();

double[][] newC = new double[b+4][old[0].length];

for (i = 0; i < b; i++) {

for (j = 0; j < old[0].length; j++) {

newC[i + 2][j] = old[i][j];

}

}

for (j = 0; j < old[0].length; j++) {

newC[0][j] = newC[b][j];

newC[1][j] = newC[b + 1][j];

newC[b + 2][j] = newC[2][j];

newC[b + 3][j] = newC[3][j];

}

Matrix Cnew = new Matrix(newC);

PrintMatrix(Cnew, "Matrix C.txt");

double h = 1;

j = 0;

double[] z1 = new double[b];

double[] z2 = new double[b];

double[] z3 = new double[b];

double[] z4 = new double[b];

int q = 0; //индекс массивов z

for (i = 1; i < b + 1; i++) {

z1[q] = (newC[i+2][j] + 4 * newC[i+1][j] + newC[i][j]) / 6;

z2[q] = (newC[i+2][j] - newC[i][j]) / (2 * h);

z3[q] = (newC[i+2][j] - 2 * newC[i+1][j] + newC[i][j]) / (2 * h * h);

z4[q] = (newC[i+3][j]-3*newC[i+2][j]+3*newC[i+1][j]-newC[i][j])/(6*h*h*h);

q++;

}

PrintMassiv("Z1.txt", b, z1);

PrintMassiv("Z2.txt", b, z2);

PrintMassiv("Z3.txt", b, z3);

PrintMassiv("Z4.txt", b, z4);

double t;

int k;

String input = JOptionPane.showInputDialog("Скільки проміжних значень на кожному інтервалі Ви хочете взяти для обчислення сплайну?");

l = Integer.parseInt(input);

S = new double[b*(l+1)];

delta = (xSp[2]-xSp[1])/l;

for(i=0; i<b; i++){

for (j = 0; j < l+1; j++){

t = j * delta;

k = (l+1) * i +j;

S[k] = z1[i] + z2[i]*t + z3[i]*t*t + z4[i]*t*t*t;

}

}

PrintMassiv("S.txt", b*(l+1), S);

createGraphic();

return nameFileReturn;

}

/*

* инициализация массива-столба y

*/

public Matrix InitializationB() {

double[] N = new double[b];

for (i = 0; i < b; i++) {

N[i] = ySp[i];

}

return new Matrix(N, b);

}

/*

* input matrix in file

*/

public void PrintMatrix(Matrix mas, String name) {

NumberFormat nf = NumberFormat.getInstance();

f = new java.io.File(System.getProperty("user.dir") + System.getProperty("file.separator") + "SplineOpenMethod");

f.mkdir();

try {

int row = mas.getRowDimension();

int col = mas.getColumnDimension();

out = new PrintWriter(new BufferedWriter(new FileWriter(f + System.getProperty("file.separator") + name)));

for (i = 0; i < row; i++) {

for (j = 0; j < col; j++) {

out.print(nf.format(mas.get(i, j)));

out.print(" ");

}

out.println();

}

out.flush();

} catch (IOException ex) {

ex.getMessage();

}

}

/**

* print all masivs

*/

public void PrintMassiv(String name, int r, double[] a) {

java.io.File f = new java.io.File(System.getProperty("user.dir") + System.getProperty("file.separator") + "SplineOpenMethod");

f.mkdir();

NumberFormat nf = NumberFormat.getInstance();

try {

out = new PrintWriter(new BufferedWriter(new FileWriter(f + System.getProperty("file.separator") + name)));

for (j = 0; j < r; j++) {

out.print(nf.format(a[j]));

out.println();

}

out.flush();

} catch (IOException ex) {

ex.getMessage();

}

}

private void createGraphic(){

JFrame frame = new JFrame("Графік сплайну на основі згладжених даних");

frame.setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);

frame.setPreferredSize(new Dimension(682, 565));

frame.setIconImage(new ImageIcon("src/graphics/graph.png").getImage());

XYSeries series = new XYSeries("Вхідні дані");

XYSeries series2 = new XYSeries("Отримані дані");

double[] t = new double[b*(l+1)];

t[0] = xSp[0];

for (i = 1; i < b*(l+1); i++) {

t[i] = t[i-1] + delta;

}

for (i = 0; i < b; i++) {

series.add(xSp[i], ySp[i]);

}

for (i = 0; i < b*(l+1); i++) {

series2.add(t[i], S[i]);

}

XYSeriesCollection data = new XYSeriesCollection();

data.addSeries(series);

data.addSeries(series2);

NumberAxis numberaxis = new NumberAxis("X");

numberaxis.setAutoRangeIncludesZero(false);

NumberAxis numberaxis1 = new NumberAxis("Y");

numberaxis1.setAutoRangeIncludesZero(false);

XYSplineRenderer xysplinerenderer = new XYSplineRenderer();

XYPlot xyplot = new XYPlot (data, numberaxis, numberaxis1, xysplinerenderer);

xyplot.setBackgroundPaint(Color.lightGray);

xyplot.setDomainGridlinePaint(Color.white);

xyplot.setRangeGridlinePaint(Color.white);

xyplot.setAxisOffset(new RectangleInsets(4, 4, 4, 4));

JFreeChart jfreechart = new JFreeChart("Сплайн на основі згладжених даних", JFreeChart.DEFAULT_TITLE_FONT, xyplot, true);

ChartUtilities.applyCurrentTheme(jfreechart);

ChartPanel chartPanel = new ChartPanel(jfreechart);

frame.setContentPane(chartPanel);

frame.pack();

frame.setVisible(true);

}

}

Method.java

package splain;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.ImageIcon;

import javax.swing.JColorChooser;

import javax.swing.JFrame;

/**

* Method

*

* @version 1.1 30 May 2013

* @author Rimma Berdo

*/

public class Method extends javax.swing.JFrame {

Splain spl;

public Method(Splain spl) {

initComponents();

setIconImage(new ImageIcon("src/graphics/graph.png").getImage());

this.spl = spl;

}

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

buttonGroup1 = new javax.swing.ButtonGroup();

jPanel1 = new javax.swing.JPanel();

jLabel1 = new javax.swing.JLabel();

rbUpdate = new javax.swing.JRadioButton();

rbTriangle = new javax.swing.JRadioButton();

rbSpline = new javax.swing.JRadioButton();

jSeparator1 = new javax.swing.JSeparator();

jLabel2 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

triangleFile = new javax.swing.JTextField();

jLabel4 = new javax.swing.JLabel();

updateFile = new javax.swing.JTextField();

jLabel5 = new javax.swing.JLabel();

splineFile = new javax.swing.JTextField();

rbSpline1 = new javax.swing.JRadioButton();

jLabel6 = new javax.swing.JLabel();

splineOpenFile1 = new javax.swing.JTextField();

jMenuBar1 = new javax.swing.JMenuBar();

menuFile = new javax.swing.JMenu();

itemColor = new javax.swing.JMenuItem();

itemExit = new javax.swing.JMenuItem();

menuHelp = new javax.swing.JMenu();

itemShowHelp = new javax.swing.JMenuItem();

itemAbout = new javax.swing.JMenuItem();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

setTitle("Згладжування даних за допомогою сплайна: Вибір методу");

setPreferredSize(new java.awt.Dimension(682, 700));

addWindowListener(new java.awt.event.WindowAdapter() {

public void windowClosed(java.awt.event.WindowEvent evt) {

formWindowClosed(evt);

}

});

jPanel1.setBackground(new java.awt.Color(153, 255, 153));

jPanel1.setPreferredSize(new java.awt.Dimension(682, 700));

jLabel1.setFont(new java.awt.Font("Cambria", 1, 18)); // NOI18N

jLabel1.setText("Оберіть метод згладжування даних");

rbUpdate.setBackground(new java.awt.Color(153, 255, 153));

buttonGroup1.add(rbUpdate);

rbUpdate.setFont(new java.awt.Font("Cambria", 0, 18)); // NOI18N

rbUpdate.setText("уточнений метод");

rbUpdate.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

rbUpdateActionPerformed(evt);

}

});

rbTriangle.setBackground(new java.awt.Color(153, 255, 153));

buttonGroup1.add(rbTriangle);

rbTriangle.setFont(new java.awt.Font("Cambria", 0, 18)); // NOI18N

rbTriangle.setText("метод центра трикутника");

rbTriangle.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

rbTriangleActionPerformed(evt);

}

});

rbSpline.setBackground(new java.awt.Color(153, 255, 153));

buttonGroup1.add(rbSpline);

rbSpline.setFont(new java.awt.Font("Cambria", 0, 18)); // NOI18N

rbSpline.setText("за допомогою сплайна");

rbSpline.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

rbSplineActionPerformed(evt);

}

});

jSeparator1.setForeground(new java.awt.Color(102, 102, 0));

jLabel2.setFont(new java.awt.Font("Cambria", 1, 18)); // NOI18N

jLabel2.setText("Отримані дані збережені у файлах");

jLabel2.setToolTipText("");

jLabel3.setFont(new java.awt.Font("Cambria", 2, 18)); // NOI18N

jLabel3.setText("Метод центра тикутника:");

triangleFile.setFont(new java.awt.Font("Cambria", 0, 18)); // NOI18N

triangleFile.setDisabledTextColor(new java.awt.Color(51, 0, 102));

triangleFile.setEnabled(false);

triangleFile.setName("");

jLabel4.setFont(new java.awt.Font("Cambria", 2, 18)); // NOI18N

jLabel4.setText("Уточнений метод:");

updateFile.setFont(new java.awt.Font("Cambria", 0, 18)); // NOI18N

updateFile.setDisabledTextColor(new java.awt.Color(51, 0, 102));

updateFile.setEnabled(false);

updateFile.setName("");

jLabel5.setFont(new java.awt.Font("Cambria", 2, 18)); // NOI18N

jLabel5.setText("Сплайн:");

splineFile.setFont(new java.awt.Font("Cambria", 0, 18)); // NOI18N

splineFile.setDisabledTextColor(new java.awt.Color(51, 0, 102));

splineFile.setEnabled(false);

splineFile.setName("");

rbSpline1.setBackground(new java.awt.Color(153, 255, 153));

buttonGroup1.add(rbSpline1);

rbSpline1.setFont(new java.awt.Font("Cambria", 0, 18)); // NOI18N

rbSpline1.setText("<html>за допомогою сплайна використовуючи згладжені дані</html>");

rbSpline1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

rbSpline1ActionPerformed(evt);

}

});

jLabel6.setFont(new java.awt.Font("Cambria", 2, 18)); // NOI18N

jLabel6.setText("Сплайн на основі згладжених даних:");

jLabel6.setToolTipText("");

splineOpenFile1.setFont(new java.awt.Font("Cambria", 0, 18)); // NOI18N

splineOpenFile1.setDisabledTextColor(new java.awt.Color(51, 0, 102));

splineOpenFile1.setEnabled(false);

splineOpenFile1.setName("");

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addGap(171, 171, 171)

.addComponent(jLabel1)

.addContainerGap())

.addGroup(jPanel1Layout.createSequentialGroup()

.addGap(47, 47, 47)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel6)

.addComponent(splineOpenFile1, javax.swing.GroupLayout.PREFERRED_SIZE, 583, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel4)

.addComponent(jLabel3)

.addComponent(jLabel5)

.addComponent(splineFile, javax.swing.GroupLayout.PREFERRED_SIZE, 583, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 583, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)

.addComponent(triangleFile, javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(updateFile, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 583, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createSequentialGroup()

.addGap(136, 136, 136)

.addComponent(jLabel2))

.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(rbUpdate)

.addComponent(rbTriangle))

.addGap(67, 67, 67)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(rbSpline)

.addComponent(rbSpline1, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE))))

.addGap(0, 27, Short.MAX_VALUE))

);

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addGap(23, 23, 23)

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(rbSpline, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(rbTriangle))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(rbUpdate)

.addComponent(rbSpline1, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(18, 18, 18)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 11, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jLabel2)

.addGap(18, 18, 18)

.addComponent(jLabel3)

.addGap(18, 18, 18)

.addComponent(triangleFile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(28, 28, 28)

.addComponent(jLabel4)

.addGap(18, 18, 18)

.addComponent(updateFile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(jLabel5)

.addGap(18, 18, 18)

.addComponent(splineFile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(jLabel6)

.addGap(18, 18, 18)

.addComponent(splineOpenFile1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(129, Short.MAX_VALUE))

);

menuFile.setText("Файл");

itemColor.setText("Змінити колір фону");

itemColor.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

itemColorActionPerformed(evt);

}

});

menuFile.add(itemColor);

itemExit.setText("Вихід");

itemExit.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

itemExitActionPerformed(evt);

}

});

menuFile.add(itemExit);

jMenuBar1.add(menuFile);

menuHelp.setText("Довідка");

itemShowHelp.setText("Переглянути довідку");

menuHelp.add(itemShowHelp);

itemAbout.setText("Про програму");

itemAbout.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

itemAboutActionPerformed(evt);

}

});

menuHelp.add(itemAbout);

jMenuBar1.add(menuHelp);

setJMenuBar(jMenuBar1);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

.addGap(0, 0, Short.MAX_VALUE)

.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

.addGap(0, 0, Short.MAX_VALUE)

.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

);

pack();

}// </editor-fold>

private void rbTriangleActionPerformed(java.awt.event.ActionEvent evt) {

spl.title = "Згладжування методом трикутника";

triangleFile.setText(spl.tr_m());

spl.nonShowGr1();

}

private void rbUpdateActionPerformed(java.awt.event.ActionEvent evt) {

spl.title = "Згладжування уточненим методом";

updateFile.setText(spl.up_m());

spl.nonShowGr1();

}

private void rbSplineActionPerformed(java.awt.event.ActionEvent evt) {

spl.nonShowGr1();

splineFile.setText(spl.spli());

}

private void formWindowClosed(java.awt.event.WindowEvent evt) {

System.exit(0);

}

private void itemExitActionPerformed(java.awt.event.ActionEvent evt) {

System.exit(0);

}

private void itemAboutActionPerformed(java.awt.event.ActionEvent evt) {

spl.help();

}

private void itemColorActionPerformed(java.awt.event.ActionEvent evt) {

JFrame colorFrame = new JFrame();

colorFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

Color defaultColor = getBackground();

Color selected = JColorChooser.showDialog(

colorFrame,

"Set background",

defaultColor);

if (selected != null) {

jPanel1.setBackground(selected);

rbSpline.setBackground(selected);

rbTriangle.setBackground(selected);

rbUpdate.setBackground(selected);

rbSpline1.setBackground(selected);

}

colorFrame.setVisible(true);

}

private void rbSpline1ActionPerformed(java.awt.event.ActionEvent evt) {

final JFrame frame = new JFrame("Вибір файлу");

frame.setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);

frame.setPreferredSize(new Dimension(400, 200));

frame.setIconImage(new ImageIcon("src/graphics/graph.png").getImage());

javax.swing.ButtonGroup buttonGroup2 = new javax.swing.ButtonGroup();

javax.swing.JRadioButton rbTr = new javax.swing.JRadioButton();

javax.swing.JRadioButton rbUp = new javax.swing.JRadioButton();

javax.swing.JLabel labRB = new javax.swing.JLabel();

javax.swing.JPanel panelRB = new javax.swing.JPanel();

rbTr.setBackground(new java.awt.Color(153, 255, 153));

rbTr.setFont(new java.awt.Font("Cambria", 0, 18));

rbTr.setText("методом центра трикутника");

buttonGroup2.add(rbTr);

rbUp.setBackground(new java.awt.Color(153, 255, 153));

rbUp.setFont(new java.awt.Font("Cambria", 0, 18));

rbUp.setText("уточненим методом");

buttonGroup2.add(rbUp);

labRB.setFont(new java.awt.Font("Cambria", 1, 18));

labRB.setText("<html>Оберіть згладжені яким методом дані використовувати для побудови сплайну</html>");

panelRB.setBackground(new java.awt.Color(153, 255, 153));

panelRB.setLayout(new GridLayout(3,1));

panelRB.add(labRB);

panelRB.add(rbTr);

panelRB.add(rbUp);

rbTr.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent ae) {

spl.choose = triangleFile.getText();

frame.setVisible(false);

splineOpenFile1.setText(spl.spli1());

}});

rbUp.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent ae) {

spl.choose = updateFile.getText();

frame.setVisible(false);

splineOpenFile1.setText(spl.spli1());

}});

spl.frameDisplayCenter(400, 200, frame);

frame.add(panelRB);

frame.setVisible(true);

frame.pack();

}

private javax.swing.ButtonGroup buttonGroup1;

private javax.swing.JMenuItem itemAbout;

private javax.swing.JMenuItem itemColor;

private javax.swing.JMenuItem itemExit;

private javax.swing.JMenuItem itemShowHelp;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JMenuBar jMenuBar1;

private javax.swing.JPanel jPanel1;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JMenu menuFile;

private javax.swing.JMenu menuHelp;

private javax.swing.JRadioButton rbSpline;

private javax.swing.JRadioButton rbSpline1;

private javax.swing.JRadioButton rbTriangle;

private javax.swing.JRadioButton rbUpdate;

private javax.swing.JTextField splineFile;

private javax.swing.JTextField splineOpenFile1;

private javax.swing.JTextField triangleFile;

private javax.swing.JTextField updateFile;

}

Додаток Б

Відгук керівника

ВІДГУК

на дипломний проект бакалавра на тему:

"Розробка програми фільтрації шуму за допомогою сплайнів"

студентки групи ПІітС-11-1 Бердо Рімми Сергіївни

1. Ціль дипломного проекту - розробка програмного продукту фільтрації шуму за допомогою сплайнів.

2. Обрана тема актуальна в зв'язку з широким використанням сплайнів у обчислювальній техніці в областях теоріїї апроксимації, чисельних методах рішення диференціальних та інтегральних рівнянь, теорії керування, математичній статистиці і багатьо інших.

3. Тема дипломного проекту безпосередньо повязана з об'єктом діяльності бакалавра напрямку 6.050103 "Програмна інженерія".

4. Задачі дипломного проекту, що стосуються розробоки програмного продукту фільтрації шумів, віднесені у освітньо-кваліфікаційну характеристику бакалавра до класу стереотипних, рішення яких базується на знаково-понятійних вміннях.

5. Оригінальність технічних рішень заключається в розробці програми фільтрації шумів за допомогою сплайнів з використанням мови програмування Java і її бібліотеки JAMA.

6. Практичне значення результатів роботи заключається у підвищенні ефективності первинної обробки даних.

7. Оформлення матеріалов дипломного проекту виконано на сучасному рівні і відповідає вимогам, що пред'являються до робіт даної кваліфікації.

8. Степінь самостійності виконання дипломного проекту достатня.

9. Даний дипломний проект в цілому заслуговує оцінки "відмінно".

Додаток В

Рецензія

на дипломний проект бакалавра на тему:

"Розробка програми фільтрації шуму за допомогою сплайнів"

студентки групи ПІітС-11-1 Бердо Рімми Сергіївни

Вирішення будь-якої технічної задачі, пов'язаної з обробкою цифрових даних (сигналу), незалежно від їх природи, починається з виділення корисної інформації (інформативних ознак). Як правило вихідна інформація надається нам с деякою похибкою. Випадкові похибки (шуми) при цьому необхідно погасити тим чи іншим фільтром. Існують різні методи видалення "білого шуму" з тією чи іншою точністю, однак доцільніше згладжування виконувати за допомогою сплайнів. При цьому згладжування буде більш точнішим якщо в якості вхідної інформації використати згладжені дані, наприклад, за методом центра тяжіння трикутників або більш точним методом.

В роботі, яка рецензується розроблена програма фільтрації шуму за допомогою сплайнів.

Використовувані технології розробки системи обробки інформації напряму повязані з об'єктом діяльності бакалавра напрямку 6.050103 "Програмна інженерія".

Студентка Р.С. Бердо достатньо добре розібралась у специфіці застосування різномантих інформаційних технологій, особливо, мові програмування Java.

Враховуючи вищесказане, можна зробити висновок, що даний проект сповна відповідає вимогам, які пред'являються до кваліфікаційних робіт рівня бакалавра.

Степінь проробки компонентів даного проекту дозволяє оцінити роботу Р.С. Бердо на "відмінно".

Размещено на Allbest.ru


Подобные документы

  • Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.

    курсовая работа [991,4 K], добавлен 06.08.2013

  • Загальна характеристика методів проектування та документації додатків. Розробка інтерфейсу програми для медичного діагностичного центру. Вибір архітектури. Описання логічної структури програми. Розробка структури бази даних проекту, полів таблиць.

    курсовая работа [2,0 M], добавлен 21.08.2015

  • Розробка програми для управління навчальним процесом студентської групи вищого навчального закладу. Об’єктно-орієнтоване проектування об’єктів групи. Створення мови програмування Java. Побудова графічного інтерфейсу. Робота з невеликими базами даних.

    курсовая работа [935,3 K], добавлен 21.12.2013

  • Аналіз технічного забезпечення, вибір інструментального програмного забезпечення та середовища розробки програм. Створення класів для реалізації необхідних функцій для роботи програмного засобу. Розробка інтерфейсу для користувача та лістинг програми.

    курсовая работа [343,9 K], добавлен 24.08.2012

  • Розробка програми для автоматизованого розрахунку продажів у крамниці спорттоварів. Розробка концептуальної та логічної моделей бази даних. Автоматизація обробки інформації. Ядро програмного прикладного забезпечення. Розробка візуального інтерфейсу.

    курсовая работа [2,3 M], добавлен 26.12.2014

  • Проектування інтерфейсу програми. Вимоги до продукту. Вхідні дані на розробку автоматизованої системи. Вибір середовища програмування. Розробка структури бази даних. Функціональна та логічна структура програми. Розробка структури таблиць бази даних.

    курсовая работа [43,1 K], добавлен 30.06.2015

  • Створення програми для роботи з веб-камерою з автоматичним визначенням встановленої камери на комп'ютері. Характеристика апаратної конфігурації програми. Опис мови і середовища програмування. Розробка алгоритму, інструкції для програміста та користувача.

    курсовая работа [1,2 M], добавлен 26.07.2013

  • Оцифровування карти за допомогою програмного продукту ArcGis. Порівняння методів інтерполяції за допомогою програмних продуктів Surfer та ArcGis. Згладжування отриманих сіткових даних за допомогою сплайнів і фільтрації. Застосування сіткових чисел.

    курсовая работа [2,1 M], добавлен 31.01.2014

  • Створення програми для виконання найпростіших функцій календаря за допомогою Borland DELPHI 2007. Аналіз процесу обробки інформації і побудова функціональних діаграм. Розробка інтерфейсу користувача, форм вводу-виводу інформації, основних алгоритмів.

    курсовая работа [1,3 M], добавлен 01.06.2013

  • Розробка алгоритму по виявленню і локалізації особи на зображенні у візуальному середовищі Delphi. Розробка програми по виділенню областей кольору шкіри особи, крапок, ліній і яскравості зображення. Опис структури програми і інтерфейсу користувача.

    курсовая работа [3,9 M], добавлен 07.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.