0

@オリバー・ワトキンス。コードは次のとおりです。最初の方法はファイルからデータを取得する方法で、2 番目の方法はライブから取得する方法です。最後のものは、いくつかの処理後のプロットについてです。ee[] と y[] をデータ配列と考えてください。

     private byte[] FileR(String filename) {
                byte[] data = null;
                 AudioInputStream ais ;

try {
                 File fileIn = new File(filename);  
                 if (fileIn.exists()) {
                     ais = AudioSystem.getAudioInputStream(fileIn);
                     data = new byte[ais.available()];
                     ais.read(data);
                 }
             }catch (UnsupportedAudioFileException | IOException e) {
                 System.out.println(e.getMessage());
                 throw new RuntimeException("Could not read " + filename);
             }
             return data;
         }
         private byte[] Capture(double t) throws LineUnavailableException {
             AudioFormat format = new AudioFormat(48000,16,2,true,false);
             DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
             line = (TargetDataLine) AudioSystem.getLine(info);
             line.open(format);
             line.open();
             int size=(int) (line.getBufferSize()*t);
             byte[] b = new byte[size];
             line.start();
             line.read(b, 0, size);
             return b;
         }                                                                                               private void plot(double[] ee, double[] y)  {
             XYSeries see = new XYSeries("Filtered");
             for(int i=0;i<ee.length;i++){
                 see.add(i,ee[i]);
             }
            XYSeriesCollection cee=new XYSeriesCollection();
            cee.addSeries(see);
            XYItemRenderer ree= new StandardXYItemRenderer();
            NumberAxis rangeAxisee = new NumberAxis("Filtered");
            XYPlot subplot1 = new XYPlot(cee, null, rangeAxisee, ree);
            subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
            XYSeries sy = new XYSeries("Noisy");
             for(int i=0;i<y.length;i++){
                 sy.add(i,y[i]);
             }
            XYSeriesCollection cy=new XYSeriesCollection();
            cy.addSeries(sy);
            XYItemRenderer ry= new StandardXYItemRenderer();
            NumberAxis rangeAxisy = new NumberAxis("Noisy");
            XYPlot subplot2 = new XYPlot(cy, null, rangeAxisy, ry);
            subplot2.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
            CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("Domain"));
            plot.setGap(10.0);
            plot.add(subplot1);
            plot.add(subplot2);
            plot.setOrientation(PlotOrientation.VERTICAL);
            JFreeChart chart = new JFreeChart("Adaptive Filter",
                                  JFreeChart.DEFAULT_TITLE_FONT, plot, true);
            panel = new ChartPanel(chart, true, true, true, false, true);
            JFrame frame= new JFrame();       
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(750,500);
            frame.add(panel,BorderLayout.CENTER);
            frame.setVisible(true);        
         }
4

0 に答える 0