java基础教程4 :Gui和绘图

[Java GUI] 简易Java绘图程序实例 本例演示了如何响应鼠标动作来实现绘图,为使重绘时原先信息不丢失,使用了Vector类来保存所绘制的各条曲线,其中curve对象用于保存每条曲线,而curves对象保存所有绘制的独立曲线。 import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Graphics; 阅读详情

java.awt(抽象窗口工具包)是利用了操作系统提供的图形库向我们提供界面开发的方法,所以运行较快,因为其要具有平台无关性,所以awt显然只能提供不同操作系统图形库的交集功能。相比之下,swing是基于awt的,他利用awt提供的接口方法,通过模拟的方式实现了更丰富的界面。我们将awt控件称为重量级控件,将swing控件称之为轻量级控件。(不依赖本地代码的是轻量级,依赖本地代码的是重量级)在java中,所有swing控件都是大写字母J开头的。类图如下:


现在,我们展示基础的界面代码

import java.awt.Button;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;

 

public class TestGui {
    public static void main(String[] args)
    {
       //创建frame
       JFrame frame = new JFrame("welcome!!");
       //调整frame的大小和初始位置
       frame.setSize(400, 400);
       frame.setLocation(100, 100);
       //新建5个Button
       Button button1 = new Button("hello1");
       Button button2 = new Button("hello2");
       Button button3 = new Button("hello3");
       Button button4 = new Button("hello4");
       Button button5 = new Button("hello5");
       //将5个Button添加到frame中
       frame.add(button1,"East");
       frame.add(button2,"West");
       frame.add(button3,"South");
       frame.add(button4,"Center");
       frame.add(button5,"North");

       //增加窗口监听事件,使用内部类方法,并用监听器的默认适配器
       frame.addWindowListener(new WindowAdapter(){
           //重写窗口关闭事件
           @Override
           public void windowClosing(WindowEvent arg0) {
              System.exit(0);
           }
       });
       //显示窗体
       frame.setVisible(true);
    }  
}

下面展示向上述代码中添加绘图代码(使用java2D)

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.*;
public class TestGui extends JFrame{
	private myPanel p;
	public TestGui(String name){
		super();			//继承父类的构造方法
		setTitle(name);                 //名字
		setBounds(0,0,300,300);		//大小
		BorderLayout bl = new BorderLayout();
		bl.setHgap(20);
		bl.setVgap(20);
		getContentPane().setLayout(bl);//布局管理
	        p = new myPanel("jarvischu"); 
	        p.setBounds(0, 0, 150, 150);
	        getContentPane().add(p,bl.CENTER);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置默认关闭操作
	}	                                                                                                        
	public static void main(String args[]){
		TestGui frame = new TestGui("JarvisChu");
		frame.setVisible(true);		
	} 
}
class myPanel extends JPanel{
	private String m_Name;
	public myPanel(String name){
		m_Name = name;
	}	
	public void paint(Graphics g){
		Graphics2D g2d = (Graphics2D)g;
		GradientPaint grdp = new GradientPaint(0,0,Color.blue,100,50,Color.RED);
                                                           //创建一个渐变填充的对象
		g2d.setPaint(grdp);                        //选中该Paint对象
		g2d.fillRect(0, 0, 200, 200);
	}
}

最后,让我们设计一个完整的读取数据,并进行用户界面交互的程序,利用jfreechart进行绘图

package DataShow;

import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import org.jfree.chart.*;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.data.category.DefaultCategoryDataset;


public class DataShow extends JFrame implements ItemListener{
	JCheckBox zhuzhuangtu;
	JCheckBox bingzhuangtu;
	CardLayout cLayout;
	JPanel chartPanel;
	static int[] data = new int[4];
	 //加载jdbc
	 static{
		 try{
			 Class.forName ( "org.gjt.mm.mysql.Driver" );
			 System.out.println ( "success loading mysql Driver...." );
	     } catch ( Exception e ){
	    	 System.out.println ( "Error loading mysql Driver....." );
	    	 e.printStackTrace ( );
	     }
	}
	
	
	public DataShow(){
		super();			//继承父类的构造方法
		setTitle("ShowData");                 //名字
		setBounds(0,0,300,300);		//大小
		FlowLayout layout = new FlowLayout();
		setLayout(layout);	
		JLabel label1 = new JLabel("选择绘制方式"); 
		add(label1); 
		zhuzhuangtu = new JCheckBox("条形图");
		bingzhuangtu = new JCheckBox("饼状图");
		add(zhuzhuangtu);
		add(bingzhuangtu);
		zhuzhuangtu.addItemListener(this);
		bingzhuangtu.addItemListener(this);
		
		cLayout  = new CardLayout();
		chartPanel = new JPanel(cLayout);


		//绘制饼状图
		PieDataset dataset1 = createDataset1();
		JFreeChart bingzhuangtuChart = createPieChart(dataset1, "各季度生产情况");
		ChartPanel bingzhuangtuChartPanel = new ChartPanel(bingzhuangtuChart);
		bingzhuangtuChartPanel.setPreferredSize(new java.awt.Dimension(500, 400));//设置组件尺寸

		//绘制柱状图
		DefaultCategoryDataset dataset2 = createDataset2();
		JFreeChart zhuzhuangtuChart = ChartFactory.createBarChart("各季度生产情况",null,null,dataset2,PlotOrientation.HORIZONTAL,true,false,false);
		TextTitle textTitle = zhuzhuangtuChart.getTitle();
		textTitle.setFont(new Font("黑体",Font.PLAIN,20));
		CategoryPlot categoryplot = (CategoryPlot)zhuzhuangtuChart.getPlot();
		categoryplot.getRenderer().setSeriesPaint(0,new Color(228,109,10));
		NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
		CategoryAxis domainAxis = categoryplot.getDomainAxis();
		//设置X轴坐标上的字体样式
		domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
		//设置X轴的标题字体样式
		domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
		//设置Y轴坐标上的字体样式
		numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
		//设置Y轴的标题字体样式
		numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));
		//设置图片最底部字体样式
		if(zhuzhuangtuChart.getLegend()!=null){
			zhuzhuangtuChart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
		}

		ChartPanel zhuzhuangtuChartPanel = new ChartPanel(zhuzhuangtuChart);
		zhuzhuangtuChartPanel.setPreferredSize(new java.awt.Dimension(300, 200));//设置组件尺寸			
		
		
		chartPanel.add(bingzhuangtuChartPanel,"bingzhuangtutuChartPanel");					
		chartPanel.add(zhuzhuangtuChartPanel,"zhuzhuangtutuChartPanel");
		add(chartPanel);		
		
		setDefaultCloseOperation(EXIT_ON_CLOSE);//设置默认关闭操作
		setVisible(true);	
		bingzhuangtu.setSelected(true);
	}	                                                                                                        
	public static void main(String args[]){		
		//读取数据库中的数据
		 try{
			 String url = "jdbc:mysql://localhost/sandbox";
	         //建立连接
	         Connection con = DriverManager.getConnection ( url, "root", "gaodaliang" );
	         //建立发送SQL命令的Statement对象
	         Statement stmt = con.createStatement ( );
	         //返回查询结果
	         ResultSet rs = stmt.executeQuery ( "select * from product_info" );
	         ResultSetMetaData md = rs.getMetaData ( );
	         //读取表头
	         int col = md.getColumnCount ( );
	         for ( int i = 1; i <= col; i++ ){
	                System.out.println ( md.getColumnName ( i ) + "/t" );
	         }
	         //读取数据
	         int temp = 0;
	         while ( rs.next ( ) ){
	        	 
	        	 String strData = "";
	             for ( int i = 1; i <= col; i++ ){
	            	 strData = strData + rs.getString ( i ) + "/t";
	            	 if(i==3){
	            		data[temp]=i=Integer.parseInt(rs.getString ( i ));           		
	            	 }
	             }
	             System.out.println ( strData );
	             temp++;
	         }
	         //断开Connection连接
	         rs.close();
	         stmt.close();
	         con.close ( );
		 } catch ( SQLException e ){
	            e.printStackTrace ( );
	     }
		 DataShow frame = new DataShow();	
		 frame.pack();
		 
	} 
	@Override
    public void itemStateChanged(ItemEvent e) {
		Object source = e.getItemSelectable();
		if ( source == bingzhuangtu){
			if(e.getStateChange()==ItemEvent.SELECTED){
				zhuzhuangtu.setSelected(false);
				//显示饼状图
				cLayout.show(chartPanel,"bingzhuangtutuChartPanel");				
			}			
		}
		if ( source == zhuzhuangtu){
			if(e.getStateChange()==ItemEvent.SELECTED){
				bingzhuangtu.setSelected(false);
				//绘制柱状图
				cLayout.show(chartPanel,"zhuzhuangtutuChartPanel");
			}	
		}
	}
	
	private PieDataset createDataset1() {
		DefaultPieDataset result = new DefaultPieDataset();//创建一个DefaultPieDataset实例,Dataset是图表的容器
		result.setValue("第一季度", data[0]);//Sets the data value for a key and 
		result.setValue("第二季度", data[1]);//sends  a DatasetChangeEvent to all registered listeners.
		result.setValue("第三季度", data[2]);//以上注释请自己翻译
		result.setValue("第四季度", data[3]);
		return result;//返回DefaultPieDataset对象
	}
	
	private DefaultCategoryDataset createDataset2() {
		DefaultCategoryDataset result = new DefaultCategoryDataset();//创建一个DefaultPieDataset实例,Dataset是图表的容器
		result.addValue(data[0],"生产数","第一季度");
		result.addValue(data[1],"生产数","第二季度");
		result.addValue(data[2],"生产数","第三季度");
		result.addValue(data[3],"生产数","第四季度");
		return result;//返回DefaultPieDataset对象
	}
	
	
	private JFreeChart createPieChart(PieDataset dataset, String title) {
		JFreeChart chart = ChartFactory.createPieChart3D(title, dataset, true,
				true, false);//创建一个3D饼图
		TextTitle textTitle = chart.getTitle();//获取图表的标题
		textTitle.setFont(new Font("黑体", Font.PLAIN, 20));//设置图表的标题字体,避免产生乱码
		chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));//设置项目字体,避免产生乱码
		PiePlot3D plot = (PiePlot3D) chart.getPlot();//获取图表区域对象
		plot.setStartAngle(-30);//设置开始角度,默认的是90°
		plot.setLabelFont(new Font("黑体", Font.PLAIN, 20));//设置标签字体,避免乱码
		return chart;//返回JFreeChart对象
	}

} 




Java GUI小程序--画板 画板 一个可以绘画的简单绘图软件 本文用两个类来实现画板的基本功能 (源代码在文章最后面) 画板制作分两个部分: (一)界面布局 (二)实现功能 小知识: setBounds(x,y,width,height);  x:组件在容器X轴上的起点   y:组件在容器Y轴上的起点   width:组件的长度   height:组件的 下面就是一个 阅读详情

相关推荐

带按钮监听机制的简单java GUI

写在前面: 在上一篇博客中,我们介绍了一个最简单的java GUI的设计结构和相关组件,但是我们发现做出一个简单的界面并没有任何用处,连基本的交互功能(除了右上角窗口可以操作)都没有。我们希望有一个交互的体验,当点击按钮时,能够观察到实实在在的界面变化。今天,我们就来实现一个体现交互功能的简单GUI程序。1.设计任务设计一个GUI界面,包含一个半径为50的随机颜色圆和一个按钮,通过按钮可以控制圆改

Meditator_hkx的博客 3270

Java 为图形填充渐变色

1. 首先在项目中创建一个继承 JFrame 类的 FillGradientFrame 窗体类 2. 在 FillGradientFrame 窗体类中,创建内部面板类 FillGradientFrame ,并重写 JComponent 类的 paint() 方法,在该方法中使用 Graphics2D 类的 setPaint() 方法设置封装了渐变色的对象,该对象是通过 GradientPai...

Ibelievesunshine的博客 5098

Java GUI绘制时钟

Java GUI组件练习用Demo,主要是为了学习GUI的设计思路、组件的特性。这里的代码并不是最优雅的解决方案,千万别纠结这个……   要点: 绘图的框架应该继承自JFrame,具体组件继承自JPanel。 继承自JPanel的类覆写父类(JComponent)的paintComponent()方法,注意不是Container的paintComponents()! 这些都是不能重...

General_Fate的专栏 2143

GradientPaint类的作用

GradientPaint是Java2D中专门用来控制渐变的类,它提供了使用线性颜色渐变模式填充 Shape 的方法。其构造函数GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2),充分说明了它的作用,即从点(x1,y1)到点(x2,y2)进行渐变。如果在用户空间指定了 Point P1

qingmuluoyang的博客 4836

Java GUI绘图程序开发实践

GUI编程通常涉及以下几个关键概念:组件(Components):GUI中的基本构建块,如按钮(Button)、文本框(TextField)、标签(Label)等。容器(Containers):可以包含其他组件的组件,例如窗口(JFrame)和面板(JPanel)。布局管理器(Layout Managers):用于控制容器内组件位置和大小的策略,如边框布局(BorderLayout)、网格布局(GridLayout)等。

weixin_42174098的博客 1004

Java GUI绘图实战:基于AWT与Swing的画板程序设计

真正意义上的动态绘图,始于对JPanel和的深刻理解。这个机制不仅是Swing渲染的基础,更是构建交互式应用的关键。

weixin_42524864的博客 830

java渐变色代码

对象,指定了渐变的方向(从左到右)和颜色(从蓝色到红色)。然后,我们将画笔的渐变色设置为这个对象,并绘制一个矩形来填充渐变色。在这个示例中,我们创建了一个。在Java中,可以使用。

qq_28514075的博客 923

Java基础GUI绘画项目实践

Java GUI(图形用户界面)是一种以图形方式展示信息给用户的界面,它改变了人与计算机互动的方式。Java通过Swing和JavaFX等库,提供了强大的GUI支持,使得创建美观、可交互的应用程序成为可能。Java GUI广泛用于桌面应用开发,其跨平台特性使得一个编译后的程序可以在所有支持Java的操作系统上运行。在Java GUI编程中,事件监听器接口是核心的概念之一,它们定义了在特定事件发生时将被调用的方法。监听器接口通常以Listener结尾,并通过add和remove。

weixin_36078669的博客 983

Java GradientPaint 画多段颜色的colorbar(颜色条或渐变色条)

主要运用的Java基础的awt画图包,方便的画出来colorbar,如下图所示。 这个colorbar用了四种颜色:红色、黄色、浅蓝、深蓝。下面展示了两种方法: GradientPatint public BufferedImage drawGradient1(int width, int height) { BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //

Pandako's Blog 2294

Java实现画板(Java小程序 模仿Win系统画板)

Java小程序——模仿Win系统画板 使用Java实现Windows操作系统的高仿小画板。

科研绘图神器Origin中文版安装后还是英文?手把手教你三步搞定界面汉化

本文详细介绍了Origin软件安装后界面仍显示英文的解决方案,包括基础语言切换、注册表修改和序列号破解三种方法。通过逐步指导,帮助用户快速实现界面汉化,提升科研绘图效率。特别针对教育版用户提供了有效的语言锁定解除方案。

weixin_42524708的博客 1128

Java:实现为图形填充渐变色(附带源码)

Java:实现为图形填充渐变色(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 632

VS2019+EasyX图形库实战:手把手教你用C语言打造消消乐小游戏(附完整源码)

本文详细介绍了如何使用VS2019和EasyX图形库从零开始构建一个C语言消消乐小游戏。通过环境配置、数据结构设计、界面绘制、交互实现到游戏逻辑完善的完整流程,帮助开发者掌握图形编程和游戏开发的核心技巧,并附有完整源码供参考。

bush的博客 186

java图形化界面(GUI)

java图形化界面(GUI)一、AWT编程(抽象窗口工具集)1.AWT继承体系 一、AWT编程(抽象窗口工具集) 1.AWT继承体系 所有的AWT编程相关类放在java.awt包以及它的子包下,AWT编程中有两个基类:Component和MenuComponent。 Component:代表一个能以图形化形式显示出来,并可与用户交互的对象,例如Button代表一个按钮,TextField代表一个文本框等; MeanComponent:代表图形界面的菜单组件,包括MeanBar() ...

m0_64491740的博客 1万+

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 488

纽马克-贝塔法(Newmark-Beta Method)在结构动力学中的应用与实现

本文深入解析了纽马克-贝塔法(Newmark-Beta Method)在结构动力学数值计算中的核心原理与应用。作为经典的时间积分算法,它通过调节γ和β参数,在计算精度、稳定性与效率间取得平衡,尤其适用于地震响应、风振分析等工程场景。文章详细阐述了其数学内核、在有限元分析中的实现步骤,并对比了隐式与显式方案的适用场景,为工程师提供了关键的方法选择与参数调优指导。

weixin_29232121的博客 147

Java-GUI编程之绘图

绘图 很多程序如各种小游戏都需要在窗口中绘制各种图形,除此之外,即使在开发JavaEE项目时,有时候也必须"动态"地向客户 端生成各种图形、图表,比如 图形验证码、统计图等,这都需要利用AWT的绘图功能。 组件绘图原理 之前我们已经学习过很多组件,例如Button、Frame、Checkbox等等,不同的组件,展示出来的图形都不一样,其实这些组件展示出来的图形,其本质就是用AWT的绘图来完成的。 ​ 在AWT中,真正提供绘图功能的是Graphics对象,那么Component组件和Graphics对

weixin_68320784的博客 1284

手把手教你用TLP350驱动IGBT:光耦隔离驱动电路完整设计教程

本文详细介绍了如何使用TLP350光耦隔离驱动电路设计IGBT驱动方案。从TLP350芯片特性分析到驱动电路架构设计,包括信号调理、自举电源和栅极控制网络,再到PCB布局优化和保护电路设计,提供了完整的实战指南。通过实测波形分析和故障排查,帮助工程师快速掌握IGBT驱动电路的设计要点和进阶技巧。

weixin_30566063的博客 822

JAVA GUI (总结)

JAVA GUI 1.编写一个Java程序,该程序运行的运行结果如下所示。 代码: import java.awt.*; import java.awt.event.*; public class TestFlowLayout { public static void main(String args[]) { Frame f = new Frame("Flow Layout"); ...

A_dmin的博客 2万+

【LangChain编程:从入门到实践】实现多模态代理

【LangChain编程:从入门到实践】实现多模态代理 关键词:LangChain, 多模态代理, 自然语言处理, 机器学习, 知识图谱, 对话系统, 代码生成, AI代理 1. 背景介绍 随着人工智

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 579

双目摄像头全景解析:从几何光学到深度智能

双目视觉系统基于仿生学原理,通过水平排列的双摄像头模拟人眼视差机制实现三维感知。其核心是通过标定、校正、匹配等算法流程,将视差转换为深度信息,最终生成三维点云。该系统在自动驾驶、机器人导航、工业检测等领域有广泛应用,但面临弱纹理、重复图案等挑战。未来发展趋势包括与事件相机、深度学习等技术的融合,进一步提升精度和动态性能。

reset2021的博客 120

java gui 画图_java 5 绘图GUI

---恢复内容开始---绘图的基本原理color 在awt包里面字体的相关类Graphics类常用方法JFrame 继承JFrame就有主窗口了Java2D API绘图的例子了解SwingJFCJava Foundation ClassesSwing 组件Swing 是在awt的基础上扩展而来Swing的组件和容器层次中间层容器原子组件布局管理##内部类##语法机制Contents 和 Desti...

weixin_39627144的博客 303

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java基础教程-GUI

建立GUIs   本模块讲述图形用户界面的建立及布局。它介绍了抽象视窗工具包(AWT),一种建立GUIs的类包。     AWT提供用于所有Java applets及应用程序中的基本GUI组件,还为应用程序提供与机器的界面。这将保证一台计算机上出现的东西与另一台上的相一致。    在学AWT之前,简单回顾一下对象层次。记住,超类是可以扩展的,它们的属性是可继承的。而且,类可以被

liyang999的专栏 3458

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java绘图的基本介绍

本文介绍了,java绘图的一些基本知识,包括JFrame、JPanel、Graphics的使用,适合快速上手java绘图。

weixin_74200123的博客 1125

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java二级考试GUI绘图题解析:文字绘制与窗口布局

本文解析了Java二级考试中的GUI绘图题,重点讲解了文字绘制与窗口布局的实现方法。题目要求创建一个显示"数风流人物,还看今朝!"的窗口,文字使用红色24号加粗隶书,并在面板居中显示。文章详细分析了四个关键填空位置的解题思路,包括类继承关系、面板添加、组件继承和文本绘制方法。同时提供了完整代码、关键知识点解析和常见错误分析,帮助考生掌握JFrame窗口创建、JPanel自定义绘制和Graphics2D文本渲染技术。文中还分享了字体处理、抗锯齿渲染等扩展思考内容,并附有模拟练习题及答案,是

Java程序员_编程开发学习笔记_网站安全运维教程_渗透技术教程 619
上一篇: .NET基础教程--简介
下一篇: 类和类之间的关系
define_us
博客等级 码龄14年 157粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值