none
Problem mit dem Datentyp double

    Frage

  • Hallo, habe ein kleines Problem: Will ein Filter realisieren mit double - Werten. 

    Das sind meine Koeffizienzen:

     Koeffizienten = new double[211]
                {
                    -7.1542215224E-6, -7.2743444833E-6, -5.4250607117E-6, -0.0000011100975763E-0, 0.0000057973299053E-0, 0.000014912211580E-0,
                    0.000025259127684E-0, 0.000035287917709E-0, 0.000043003281959E-0, 0.000046211227835E-0, 0.000042864663922E-0, 0.000031468905641E-0,
                    0.000011488996397E-0, -0.000016311667291E-0, -0.000049674590836E-0, -0.000084855229475E-0, -0.00011687996942E-0, -0.00014006034620E-0, -0.00014873340791E-0,
                    -0.00013815449190E-0, -0.00010543033939E-0, -0.000050353315957E-0, 0.000024012278181E-0, 0.00011112883919E-0, 0.00020127067375E-0,
                    0.00028234041721E-0, 0.00034118803532E-0, 0.00036532304603E-0, 0.00034483350975E-0, 0.00027426413137E-0, 0.00015417207570E-0, -0.0000079180833200E-0, 
                    -0.00019739457224E-0, -0.00039342290231E-0, -0.00057082437573E-0, -0.00070285743599E-0, -0.00076464566986E-0, -0.00073686753921E-0, 
                    -0.00060923114426E-0, -0.00038322051169E-0, -0.000073630494093E-0, 0.00029149024621E-0, 0.00067269975507E-0, 0.0010228181708E-0, 0.0012921221542E-0,
                    0.0014345793860E-0, 0.0014144191001E-0, 0.0012122004471E-0, 0.00082950393083E-0, 0.00029144863009E-0, -0.0003536797445E-0, -0.0010372129635E-0,
                    -0.0016775761045E-0, -0.0021880689237E-0, -0.0024880009867E-0, -0.0025136508583E-0, -0.002284509828E-0, -0.00075869422153E-0, 0.00031118123246E-0, 
                    0.0014680296788E-0, 0.0025774117249E-0, 0.0034954410830E-0, 0.0040858121491E-0, 0.0042377358916E-0, 0.0038826218098E-0, 0.0030072813690E-0, 
                    0.0016616400391E-0, -0.000040570468504E-0, -0.0019289468255E-0, -0.00379142931502E-0, -0.0053952000273E-0, -0.0065143569680E-0, -0.0069568666261E-0, 
                    -0.0065923277367E-0, -0.0053742992481E-0, -0.0033549976160E-0, -0.00068971562366E-0, 0.0023705604692E-0, 0.0054986085974E-0, 0.0083213930104E-0,
                    0.010458976401E-0, 0.011568263969E-0, 0.011384068442E-0, 0.0097735841179E-0, 0.0067364851257E-0, 0.0024515376144E-0, -0.0027382048289E-0, 
                    -0.0083399715821E-0, -0.013746130678E-0, -0.018283962101E-0, -0.021276242528E-0, -0.022107144797E-0, -0.020287081876E-0, -0.015509887560E-0, -0.0076961773847E-0,
                    0.0029821475865E-0, 0.016099599779E-0, 0.030998249353E-0, 0.046831252195E-0, 0.062625433958E-0, 0.077357614247E-0, 0.090037860543E-0, 0.099792027388E-0,
                    0.10593586153E-0, 0.10803365697E-0, 0.10593586153E-0, 0.099792027388E-0, 0.090037860543E-0, 0.077357614247E-0, 0.062625433958E-0, 0.046831252195E-0, 0.030998249353E-0,
                    0.016099599779E-0, 0.0029821475865E-0, -0.0076961773847E-0, -0.015509887560E-0, -0.020287081876E-0, -0.022107144797E-0, -0.021276242528E-0, -0.018283962101E-0, 
                    -0.013746130678E-0, -0.0083399715821E-0, -0.0027382048289E-0, 0.0024515376144E-0, 0.0067364851257E-0, 0.0097735841179E-0, 0.011387068442E-0, 0.011568263969E-0, 
                    0.010458976401E-0, 0.0083213930104E-0, 0.0054986085974E-0, 0.0023705604692E-0, -0.00068971562366E-0, -0.0033549976160E-0, -0.0053742992481E-0, -0.0065923277367E-0,
                    -0.0069568666261E-0, -0.0065143569680E-0, -0.0053952000273E-0, -0.0037912931502E-0, -0.0019289468255E-0, -0.000040570468504E-0, 0.0016616400391E-0, 0.0030072813690E-0, 
                    0.0038826218098E-0, 0.0042377358916E-0, 0.0040858121491E-0, 0.0034954410830E-0, 0.0025774117249E-0, 0.0014680296788E-0, 0.00031118123246E-0, -0,00075869422153E-0, -0.0016308669653E-0,
                    -0.0022284509828E-0, -0.0025136508583E-0, -0.0024880009867E-0, -0.0021880689237E-0, -0.0016775761045E-0, -0.0010372129635E-0, -0.00035356797445E-0, 0.00029144863009E-0, 0.00082950393083E-0,
                    0.0012122004471E-0, 0.0014144191001E-0, 0.0014345793860E-0, 0.0012921221542E-0, 0.0010228181708E-0, 0.00067269975507E-0, 0.00029149024621E-0, -0.000073630494093E-0, -0.00038322051169E-0, 
                    -0.00060923114426E-0, -0.00073686753921E-0, -0.00076464566986E-0, -0.00070285743599E-0, -0.00057082437573E-0, -0.00039342290231E-0, -0.00019739457224E-0, -0.0000079180833200E-0,
                    0.00015417207570E-0, 0.00027426413137E-0, 0.00034483350975E-0, 0.00036532304603E-0, 0.00034118803532E-0, 0.00028234041721E-0, 0.00020127067375E-0, 0.00011112883919E-0, 0.000024012278181E-0,
                    -0.000050353315957E-0, -0.00010543033939E-0, -0.00013815449190E-0, -0.00014873340791E-0, -0.00014006034620E-0, -0.00011687996942E-0, -0.000084855229475E-0, -0.000049674590836E-0,
                    -0.000016311667291E-0, 0.000011488996397E-0, 0.000031468905641E-0, 0.000042864663922E-0, 0.000046211227835E-0, 0.000043003281959E-0, 0.000035287917709E-0, 0.000025259127684E-0, 
                    0.000014912211580E-0, 0.0000057973299053E-0, -0.0000011100975763E-0, -0.0000054250607117E-0, -0.0000072743444833E-0, -0.0000071542215224E-0
    
                };
                Ringbuffery = new double[211];

    Danach berechne ich mir einen Sinus der gefiltert werden soll:

    double time = (Environment.TickCount - tickStart) / 1000.0;
                y = Math.Sin(2.0 * Math.PI * 0.2 * time);
    Filterung();

    nun will ich diesen Sinus filtern:

    Ringbuffery[index] = y;
    
                index++;
    
                if (index >= 211)
                {
                    init = true;
                    index = 0;
                }
    
           //     this.Text = index.ToString();
    
                if (!init)
                {
                    return;
                }
    
                yf = 0;
    
                for (int i = 0; i < 211; i++)
                {
                    yf += Koeffizienten[i] * Ringbuffery[((i + index) % 211)];      
                }
                this.Text = yf.ToString();

    das Problem: er zeigt mir einen Wert von 10^9 an. Jedoch sollte meines Verständnisses eine MaximalAmplitude von 1 sein ( wie beim Sinus). Jemand ne Idee woran das liegen könnte?

    mfg

    Mittwoch, 27. März 2013 14:28

Alle Antworten

  • Hallo,

    es wäre nett, wenn Du ausführbaren Code posten würdest -  oben findet man nur Codefragmente.

    Die erst zusammensetzen und lauffähig zu bekommen, kann nicht Aufgabe eines Forums sein.

    Gruß Elmar

    Mittwoch, 27. März 2013 16:02
  • Hi flo1993,

    für welchen wert von time soll  y = Math.Sin(2.0 * Math.PI * 0.2 * time) > 1 werden.

    MFG

    Björn

    Freitag, 29. März 2013 19:05