/**
* dwt53.c - Fast discrete biorthogonal CDF 5/3 wavelet forward and inverse transform (lifting implementation)
*
* This code is provided "as is" and is given for educational purposes.
* 2007 - Gregoire Pau - gregoire.pau@ebi.ac.uk
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream.h>
double *tempbank=0;
/**
* fwt53 - Forward biorthogonal 5/3 wavelet transform (lifting implementation)
*
* x is an input signal, which will be replaced by its output transform.
* n is the length of the signal, and must be a power of 2.
*
* The first half part of the output signal contains the approximation coefficients.
* The second half part contains the detail coefficients (aka. the wavelets coefficients).
*
* See also iwt53.
*/
void fwt53(double* x,int n) {
double a;
int i;
// Predict 1
a=-0.5;
for (i=1;i<n-2;i+=2) {
x[i]+=a*(x[i-1]+x[i+1]);
}
x[n-1]+=2*a*x[n-2];
// Update 1
a=0.25;
for (i=2;i<n;i+=2) {
x[i]+=a*(x[i-1]+x[i+1]);
}
x[0]+=2*a*x[1];
// Scale
a=sqrt(2.0);
for (i=0;i<n;i++) {
if (i%2) x[i]*=a;
else x[i]/=a;
}
// Pack
if (tempbank==0) tempbank=(double *)malloc(n*sizeof(double));
for (i=0;i<n;i++) {
if (i%2==0) tempbank[i/2]=x[i];
else tempbank[n/2+i/2]=x[i];
}
for (i=0;i<n;i++) x[i]=tempbank[i];
}
/**
* iwt53 - Inverse biorthogonal 5/3 wavelet transform
*
* This is the inverse of fwt53 so that iwt53(fwt53(x,n),n)=x for every signal x of length n.
*
* See also fwt53.
*/
void iwt53(double* x,int n) {
double a;
int i;
// Unpack
if (tempbank==0) tempbank=(double *)malloc(n*sizeof(double));
for (i=0;i<n/2;i++) {
tempbank[i*2]=x[i];
tempbank[i*2+1]=x[i+n/2];
}
for (i=0;i<n;i++) x[i]=tempbank[i];
// Undo scale
a=1/sqrt(2.0);
for (i=0;i<n;i++) {
if (i%2) x[i]*=a;
else x[i]/=a;
}
// Undo update 1
a=-0.25;
for (i=2;i<n;i+=2) {
x[i]+=a*(x[i-1]+x[i+1]);
}
x[0]+=2*a*x[1];
// Undo predict 1
a=0.5;
for (i=1;i<n-2;i+=2) {
x[i]+=a*(x[i-1]+x[i+1]);
}
x[n-1]+=2*a*x[n-2];
}
int main() {
double x[32];
int i;
// Makes a fancy cubic signal
for (i=0;i<32;i++) x[i]=i; //5+i+0.4*i*i-0.02*i*i*i;
// Prints original sigal x
printf("Original signal:\n");
for (i=0;i<32;i++) printf("x[%d]=%f\n",i,x[i]);
printf("\n");
// Do the forward 5/3 transform
fwt53(x,32);
// Prints the wavelet coefficients
printf("Wavelets coefficients:\n");
for (i=0;i<32;i++) printf("wc[%d]=%f\n",i,x[i]);
printf("\n");
// Do the inverse 5/3 transform
iwt53(x,32);
// Prints the reconstructed signal
printf("Reconstructed signal:\n");
for (i=0;i<32;i++) printf("xx[%d]=%f\n",i,x[i]);
cin>>i;
}
LyoqCiAqICBkd3Q1My5jIC0gRmFzdCBkaXNjcmV0ZSBiaW9ydGhvZ29uYWwgQ0RGIDUvMyB3YXZlbGV0IGZvcndhcmQgYW5kIGludmVyc2UgdHJhbnNmb3JtIChsaWZ0aW5nIGltcGxlbWVudGF0aW9uKQogKgogKiAgVGhpcyBjb2RlIGlzIHByb3ZpZGVkICJhcyBpcyIgYW5kIGlzIGdpdmVuIGZvciBlZHVjYXRpb25hbCBwdXJwb3Nlcy4KICogIDIwMDcgLSBHcmVnb2lyZSBQYXUgLSBncmVnb2lyZS5wYXVAZWJpLmFjLnVrCiAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPGlvc3RyZWFtLmg+CmRvdWJsZSAqdGVtcGJhbms9MDsKCi8qKgogKiAgZnd0NTMgLSBGb3J3YXJkIGJpb3J0aG9nb25hbCA1LzMgd2F2ZWxldCB0cmFuc2Zvcm0gKGxpZnRpbmcgaW1wbGVtZW50YXRpb24pCiAqCiAqICB4IGlzIGFuIGlucHV0IHNpZ25hbCwgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSBpdHMgb3V0cHV0IHRyYW5zZm9ybS4KICogIG4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2lnbmFsLCBhbmQgbXVzdCBiZSBhIHBvd2VyIG9mIDIuCiAqCiAqICBUaGUgZmlyc3QgaGFsZiBwYXJ0IG9mIHRoZSBvdXRwdXQgc2lnbmFsIGNvbnRhaW5zIHRoZSBhcHByb3hpbWF0aW9uIGNvZWZmaWNpZW50cy4KICogIFRoZSBzZWNvbmQgaGFsZiBwYXJ0IGNvbnRhaW5zIHRoZSBkZXRhaWwgY29lZmZpY2llbnRzIChha2EuIHRoZSB3YXZlbGV0cyBjb2VmZmljaWVudHMpLgogKgogKiAgU2VlIGFsc28gaXd0NTMuCiAqLwp2b2lkIGZ3dDUzKGRvdWJsZSogeCxpbnQgbikgewogIGRvdWJsZSBhOwogIGludCBpOwoKICAvLyBQcmVkaWN0IDEKICBhPS0wLjU7CiAgZm9yIChpPTE7aTxuLTI7aSs9MikgewogICAgeFtpXSs9YSooeFtpLTFdK3hbaSsxXSk7CiAgfSAKICB4W24tMV0rPTIqYSp4W24tMl07CgogIC8vIFVwZGF0ZSAxCiAgYT0wLjI1OwogIGZvciAoaT0yO2k8bjtpKz0yKSB7CiAgICB4W2ldKz1hKih4W2ktMV0reFtpKzFdKTsKICB9CiAgeFswXSs9MiphKnhbMV07CgogIC8vIFNjYWxlCiAgYT1zcXJ0KDIuMCk7CiAgZm9yIChpPTA7aTxuO2krKykgewogICAgaWYgKGklMikgeFtpXSo9YTsKICAgIGVsc2UgeFtpXS89YTsKICB9CgogIC8vIFBhY2sKICBpZiAodGVtcGJhbms9PTApIHRlbXBiYW5rPShkb3VibGUgKiltYWxsb2MobipzaXplb2YoZG91YmxlKSk7CiAgZm9yIChpPTA7aTxuO2krKykgewogICAgaWYgKGklMj09MCkgdGVtcGJhbmtbaS8yXT14W2ldOwogICAgZWxzZSB0ZW1wYmFua1tuLzIraS8yXT14W2ldOwogIH0KICBmb3IgKGk9MDtpPG47aSsrKSB4W2ldPXRlbXBiYW5rW2ldOwp9CgovKioKICogIGl3dDUzIC0gSW52ZXJzZSBiaW9ydGhvZ29uYWwgNS8zIHdhdmVsZXQgdHJhbnNmb3JtCiAqCiAqICBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIGZ3dDUzIHNvIHRoYXQgaXd0NTMoZnd0NTMoeCxuKSxuKT14IGZvciBldmVyeSBzaWduYWwgeCBvZiBsZW5ndGggbi4KICoKICogIFNlZSBhbHNvIGZ3dDUzLgogKi8Kdm9pZCBpd3Q1Myhkb3VibGUqIHgsaW50IG4pIHsKICBkb3VibGUgYTsKICBpbnQgaTsKCiAgLy8gVW5wYWNrCiAgaWYgKHRlbXBiYW5rPT0wKSB0ZW1wYmFuaz0oZG91YmxlICopbWFsbG9jKG4qc2l6ZW9mKGRvdWJsZSkpOwogIGZvciAoaT0wO2k8bi8yO2krKykgewogICAgdGVtcGJhbmtbaSoyXT14W2ldOwogICAgdGVtcGJhbmtbaSoyKzFdPXhbaStuLzJdOwogIH0KICBmb3IgKGk9MDtpPG47aSsrKSB4W2ldPXRlbXBiYW5rW2ldOwoKICAvLyBVbmRvIHNjYWxlCiAgYT0xL3NxcnQoMi4wKTsKICBmb3IgKGk9MDtpPG47aSsrKSB7CiAgICBpZiAoaSUyKSB4W2ldKj1hOwogICAgZWxzZSB4W2ldLz1hOwogIH0KCiAgLy8gVW5kbyB1cGRhdGUgMQogIGE9LTAuMjU7CiAgZm9yIChpPTI7aTxuO2krPTIpIHsKICAgIHhbaV0rPWEqKHhbaS0xXSt4W2krMV0pOwogIH0KICB4WzBdKz0yKmEqeFsxXTsKCiAgLy8gVW5kbyBwcmVkaWN0IDEKICBhPTAuNTsKICBmb3IgKGk9MTtpPG4tMjtpKz0yKSB7CiAgICB4W2ldKz1hKih4W2ktMV0reFtpKzFdKTsKICB9CiAgeFtuLTFdKz0yKmEqeFtuLTJdOwp9CgppbnQgbWFpbigpIHsKICBkb3VibGUgeFszMl07CiAgaW50IGk7CgogIC8vIE1ha2VzIGEgZmFuY3kgY3ViaWMgc2lnbmFsCiAgZm9yIChpPTA7aTwzMjtpKyspIHhbaV09aTsgLy81K2krMC40KmkqaS0wLjAyKmkqaSppOwogIAogIC8vIFByaW50cyBvcmlnaW5hbCBzaWdhbCB4CiAgcHJpbnRmKCJPcmlnaW5hbCBzaWduYWw6XG4iKTsKICBmb3IgKGk9MDtpPDMyO2krKykgcHJpbnRmKCJ4WyVkXT0lZlxuIixpLHhbaV0pOwogIHByaW50ZigiXG4iKTsKCiAgLy8gRG8gdGhlIGZvcndhcmQgNS8zIHRyYW5zZm9ybQogIGZ3dDUzKHgsMzIpOwogIAogIC8vIFByaW50cyB0aGUgd2F2ZWxldCBjb2VmZmljaWVudHMKICBwcmludGYoIldhdmVsZXRzIGNvZWZmaWNpZW50czpcbiIpOwogIGZvciAoaT0wO2k8MzI7aSsrKSBwcmludGYoIndjWyVkXT0lZlxuIixpLHhbaV0pOwogIHByaW50ZigiXG4iKTsKCiAgLy8gRG8gdGhlIGludmVyc2UgNS8zIHRyYW5zZm9ybQogIGl3dDUzKHgsMzIpOyAKCiAgLy8gUHJpbnRzIHRoZSByZWNvbnN0cnVjdGVkIHNpZ25hbCAKICBwcmludGYoIlJlY29uc3RydWN0ZWQgc2lnbmFsOlxuIik7CiAgZm9yIChpPTA7aTwzMjtpKyspIHByaW50ZigieHhbJWRdPSVmXG4iLGkseFtpXSk7CgogIGNpbj4+aTsKfQo=
Main.java:8: error: illegal character: \35
#include <stdio.h>
^
Main.java:8: error: class, interface, or enum expected
#include <stdio.h>
^
Main.java:9: error: illegal character: \35
#include <stdlib.h>
^
Main.java:10: error: illegal character: \35
#include <math.h>
^
Main.java:11: error: illegal character: \35
#include <iostream.h>
^
Main.java:25: error: class, interface, or enum expected
void fwt53(double* x,int n) {
^
Main.java:27: error: class, interface, or enum expected
int i;
^
Main.java:30: error: class, interface, or enum expected
a=-0.5;
^
Main.java:31: error: class, interface, or enum expected
for (i=1;i<n-2;i+=2) {
^
Main.java:31: error: class, interface, or enum expected
for (i=1;i<n-2;i+=2) {
^
Main.java:31: error: class, interface, or enum expected
for (i=1;i<n-2;i+=2) {
^
Main.java:33: error: class, interface, or enum expected
}
^
Main.java:37: error: class, interface, or enum expected
a=0.25;
^
Main.java:38: error: class, interface, or enum expected
for (i=2;i<n;i+=2) {
^
Main.java:38: error: class, interface, or enum expected
for (i=2;i<n;i+=2) {
^
Main.java:38: error: class, interface, or enum expected
for (i=2;i<n;i+=2) {
^
Main.java:40: error: class, interface, or enum expected
}
^
Main.java:44: error: class, interface, or enum expected
a=sqrt(2.0);
^
Main.java:45: error: class, interface, or enum expected
for (i=0;i<n;i++) {
^
Main.java:45: error: class, interface, or enum expected
for (i=0;i<n;i++) {
^
Main.java:45: error: class, interface, or enum expected
for (i=0;i<n;i++) {
^
Main.java:47: error: class, interface, or enum expected
else x[i]/=a;
^
Main.java:48: error: class, interface, or enum expected
}
^
Main.java:52: error: class, interface, or enum expected
for (i=0;i<n;i++) {
^
Main.java:52: error: class, interface, or enum expected
for (i=0;i<n;i++) {
^
Main.java:52: error: class, interface, or enum expected
for (i=0;i<n;i++) {
^
Main.java:54: error: class, interface, or enum expected
else tempbank[n/2+i/2]=x[i];
^
Main.java:55: error: class, interface, or enum expected
}
^
Main.java:56: error: class, interface, or enum expected
for (i=0;i<n;i++) x[i]=tempbank[i];
^
Main.java:56: error: class, interface, or enum expected
for (i=0;i<n;i++) x[i]=tempbank[i];
^
Main.java:57: error: class, interface, or enum expected
}
^
Main.java:68: error: class, interface, or enum expected
int i;
^
Main.java:71: error: class, interface, or enum expected
if (tempbank==0) tempbank=(double *)malloc(n*sizeof(double));
^
Main.java:72: error: class, interface, or enum expected
for (i=0;i<n/2;i++) {
^
Main.java:72: error: class, interface, or enum expected
for (i=0;i<n/2;i++) {
^
Main.java:72: error: class, interface, or enum expected
for (i=0;i<n/2;i++) {
^
Main.java:74: error: class, interface, or enum expected
tempbank[i*2+1]=x[i+n/2];
^
Main.java:75: error: class, interface, or enum expected
}
^
Main.java:76: error: class, interface, or enum expected
for (i=0;i<n;i++) x[i]=tempbank[i];
^
Main.java:76: error: class, interface, or enum expected
for (i=0;i<n;i++) x[i]=tempbank[i];
^
Main.java:79: error: class, interface, or enum expected
a=1/sqrt(2.0);
^
Main.java:80: error: class, interface, or enum expected
for (i=0;i<n;i++) {
^
Main.java:80: error: class, interface, or enum expected
for (i=0;i<n;i++) {
^
Main.java:80: error: class, interface, or enum expected
for (i=0;i<n;i++) {
^
Main.java:82: error: class, interface, or enum expected
else x[i]/=a;
^
Main.java:83: error: class, interface, or enum expected
}
^
Main.java:87: error: class, interface, or enum expected
for (i=2;i<n;i+=2) {
^
Main.java:87: error: class, interface, or enum expected
for (i=2;i<n;i+=2) {
^
Main.java:87: error: class, interface, or enum expected
for (i=2;i<n;i+=2) {
^
Main.java:89: error: class, interface, or enum expected
}
^
Main.java:93: error: class, interface, or enum expected
a=0.5;
^
Main.java:94: error: class, interface, or enum expected
for (i=1;i<n-2;i+=2) {
^
Main.java:94: error: class, interface, or enum expected
for (i=1;i<n-2;i+=2) {
^
Main.java:94: error: class, interface, or enum expected
for (i=1;i<n-2;i+=2) {
^
Main.java:96: error: class, interface, or enum expected
}
^
Main.java:98: error: class, interface, or enum expected
}
^
Main.java:102: error: class, interface, or enum expected
int i;
^
Main.java:105: error: class, interface, or enum expected
for (i=0;i<32;i++) x[i]=i; //5+i+0.4*i*i-0.02*i*i*i;
^
Main.java:105: error: class, interface, or enum expected
for (i=0;i<32;i++) x[i]=i; //5+i+0.4*i*i-0.02*i*i*i;
^
Main.java:105: error: class, interface, or enum expected
for (i=0;i<32;i++) x[i]=i; //5+i+0.4*i*i-0.02*i*i*i;
^
Main.java:108: error: class, interface, or enum expected
printf("Original signal:\n");
^
Main.java:109: error: class, interface, or enum expected
for (i=0;i<32;i++) printf("x[%d]=%f\n",i,x[i]);
^
Main.java:109: error: class, interface, or enum expected
for (i=0;i<32;i++) printf("x[%d]=%f\n",i,x[i]);
^
Main.java:109: error: class, interface, or enum expected
for (i=0;i<32;i++) printf("x[%d]=%f\n",i,x[i]);
^
Main.java:110: error: class, interface, or enum expected
printf("\n");
^
Main.java:113: error: class, interface, or enum expected
fwt53(x,32);
^
Main.java:116: error: class, interface, or enum expected
printf("Wavelets coefficients:\n");
^
Main.java:117: error: class, interface, or enum expected
for (i=0;i<32;i++) printf("wc[%d]=%f\n",i,x[i]);
^
Main.java:117: error: class, interface, or enum expected
for (i=0;i<32;i++) printf("wc[%d]=%f\n",i,x[i]);
^
Main.java:117: error: class, interface, or enum expected
for (i=0;i<32;i++) printf("wc[%d]=%f\n",i,x[i]);
^
Main.java:118: error: class, interface, or enum expected
printf("\n");
^
Main.java:121: error: class, interface, or enum expected
iwt53(x,32);
^
Main.java:124: error: class, interface, or enum expected
printf("Reconstructed signal:\n");
^
Main.java:125: error: class, interface, or enum expected
for (i=0;i<32;i++) printf("xx[%d]=%f\n",i,x[i]);
^
Main.java:125: error: class, interface, or enum expected
for (i=0;i<32;i++) printf("xx[%d]=%f\n",i,x[i]);
^
Main.java:125: error: class, interface, or enum expected
for (i=0;i<32;i++) printf("xx[%d]=%f\n",i,x[i]);
^
Main.java:127: error: class, interface, or enum expected
cin>>i;
^
Main.java:128: error: class, interface, or enum expected
}
^
78 errors