⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 firdigitalfilterdemo.java

📁 this code for digital nurual network program in java
💻 JAVA
字号:
import java.awt.*;
import java.applet.Applet;

// JDK 1.02 version

public class FIRDigitalFilterDemo extends Applet {

    float[] ipSignal, opSignal;
    static float ampl = 1.0f;     // default amplitude = 1.0 V
    static float rate = 8000.0f;  // default sampling rate = 8000 samples/s
    int nSamples;
    float maxValue;
    GraphPlot plotInput, plotOutput;
    Choice chWaveform, chSamples;
    TextField tfFreq, tfDCLevel, tfNoise;
    Checkbox cbAddDCLevel, cbAddNoise;
    Button btnSignal, btnLPFilter, btnBPFilter, btnHPFilter;
    FIRFilterImplementation fir = new FIRFilterImplementation();

    public void init() {

     
        setSize(500, 500);
     
       
      setLayout(new GridLayout(3,1));
        plotOutput = new GraphPlot();
        add(plotOutput);  // Output signal plot
        
           // Input signal plot
        
        plotInput = new GraphPlot();
        add(plotInput);
        plotInput.setVisible(true);

        // Control panel
        Panel pnlControls = new Panel();
       
        add(pnlControls);
        pnlControls.setLayout(new GridLayout(3, 2));

        // Waveform selection
        Panel pnlWaveform = new Panel();
        pnlWaveform.setLayout(new FlowLayout(FlowLayout.LEFT));
        Label lblWaveform = new Label("Waveform");
        chWaveform = new Choice();
	    chWaveform.addItem("Square");
	    chWaveform.select("Square");        // default waveform
        pnlWaveform.add(lblWaveform);
        pnlWaveform.add(chWaveform);
        pnlControls.add(pnlWaveform);

        // Added DC level setting
        Panel pnlAddDCLevel = new Panel();
        pnlAddDCLevel.setLayout(new FlowLayout(FlowLayout.LEFT));
        cbAddDCLevel = new Checkbox("Add DC level");
        tfDCLevel = new TextField("0", 5);
        Label lblDCLevelUnit = new Label("V");
        pnlAddDCLevel.add(cbAddDCLevel);
        pnlAddDCLevel.add(tfDCLevel);
        pnlAddDCLevel.add(lblDCLevelUnit);
        pnlControls.add(pnlAddDCLevel);

        // Signal frequency setting
        Panel pnlFrequency = new Panel();
        pnlFrequency.setLayout(new FlowLayout(FlowLayout.LEFT));
        Label lblFreq = new Label("Frequency");
        tfFreq = new TextField("100", 8);
        Label lblFreqUnit = new Label("Hz");
        pnlFrequency.add(lblFreq);
        pnlFrequency.add(tfFreq);
        pnlFrequency.add(lblFreqUnit);
        pnlControls.add(pnlFrequency);

        // Added random noise setting
        Panel pnlAddNoise = new Panel();
        pnlAddNoise.setLayout(new FlowLayout(FlowLayout.LEFT));
        cbAddNoise = new Checkbox("Add random noise");
        tfNoise = new TextField("0", 5);
        Label lblNoiseUnit = new Label("V");
        pnlAddNoise.add(cbAddNoise);
        pnlAddNoise.add(tfNoise);
        pnlAddNoise.add(lblNoiseUnit);
        pnlControls.add(pnlAddNoise); 

        // Number of samples
        Panel pnlSamples = new Panel();
        pnlSamples.setLayout(new FlowLayout(FlowLayout.LEFT));
        Label lblSamples = new Label("Number of samples");
        chSamples = new Choice();
        
        chSamples.addItem("512");
        chSamples.select("512");
        pnlSamples.add(lblSamples);
        pnlSamples.add(chSamples);
        pnlControls.add(pnlSamples); 

        Panel pnlButtons = new Panel();
        btnSignal = new Button("Digitised signal");
        
        btnHPFilter = new Button("Ecg Signal");
        
        btnHPFilter.enable();
        pnlButtons.setLayout(new FlowLayout(FlowLayout.LEFT));
        pnlButtons.add(btnSignal);
        
        pnlButtons.add(btnHPFilter);
        pnlControls.add(pnlButtons);
    }

    public boolean action(Event evt, Object obj) {
        if (evt.target == btnSignal) {
            nSamples = Integer.parseInt(chSamples.getSelectedItem());
            ipSignal = new float[nSamples];
            SignalGenerator sg = new SignalGenerator();
            sg.setWaveform(chWaveform.getSelectedItem());
            sg.setAmplitude(ampl);
            sg.setSamplingRate(rate);
            sg.setFrequency(Float.valueOf(tfFreq.getText()).floatValue());
            sg.setSamples(nSamples);

            boolean addDC = cbAddDCLevel.getState();
            sg.setDCLevelState(addDC);
            if (addDC) sg.setDCLevel(Float.valueOf(tfDCLevel.getText()).floatValue());
            boolean addNoise = cbAddNoise.getState();
            sg.setNoiseState(addNoise);
            if (addNoise) sg.setNoise(Float.valueOf(tfNoise.getText()).floatValue());

            ipSignal = sg.generate();
            btnSignal.enable();
            
            maxValue = 0.0f;
            for (int i = 0; i < nSamples; i++)
                maxValue = Math.max(maxValue, Math.abs(ipSignal[i]));
            maxValue *= 1.5f;   // allow 50% overrange on vertical axis
            plotInput.setYmax(maxValue);
            
            plotInput.setPlotValues(ipSignal);
            repaint();
            
            return true;
        }
       
        
        else
        if (evt.target == btnHPFilter) {
            fir.setFilterType(FIRFilterImplementation.HP);
            opSignal = new float[nSamples];
            opSignal = fir.filter(ipSignal);
            plotOutput.setYmax(maxValue);
            plotOutput.setPlotValues(opSignal);
            repaint();
            return true;
        }
        else
            return false;
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -