QT安装及编程的一些问题

QT中使用QGLFormat类进行OpenGL的配置 接着使用setAlphaBufferSize()、setBlueBufferSize()、setGreenBufferSize()和setRedBufferSize()方法设置颜色缓冲区的位数为8,即RGBA各使用8位。QGLFormat类是QT中用于描述OpenGL渲染环境的类,它封装了与OpenGL相关的各种配置参数,包括OpenGL版本、颜色缓冲区位数、深度缓冲区位数等等。使用QGLFormat类可以通过设置不同的参数来配置OpenGL的渲染环境,从而满足不同的需求。 阅读详情

      在安装VC++6.0时,有一个要注册环境变量的安装选项,以一个对话框的形式弹出,默认的是不装,这样在安装QT时,会无法进行编译,这个选项主要是用来对以命令行的编译来提供支持的。这个选定后,便可以正常进行编译了,在Windows下就是比Linux好的一个地方则是:安装大多不会有问题。

下面的一些问题则是从别处找来的,不知对不对,供借鉴了。

1. 如何在Qt程序中加入OpenGL支持。
在QT程序中加入OpenGL支持很简单,只需要在Kdevelop连接的库中加入“-lGL -lGLU”即可,如果需要glut支持,还可以加入“-lglut”。具体操作是在kdevelop集成编译环境中按下”F7”,在弹出的对话框中选择“Linker”一项,在输入栏输入你想添加的库即可,写法与gcc/g++一致。
一般在类QGLWidget中使用OpenGL,调用此类的头文件是qgl.h,具体写法请参考qt例程中的gear,texture,box等程序(在RedHat7.2中,它们在/usr/lib/qt-2.3.1/doc/examples下).

2. 检验linux/Unix环境是否支持OpenGL.
Qt中的QGLFormat类可以帮助我们轻易检验系统是否支持OpenGL,载入头文件(#include <qgl.h>)后,我们就可以使用QGLFormat的静态函数hasOpenGL来检验,具体写法如下例:
 if (!QGLFormat::hasOpenGL())   //Test OpenGL Environment
 {
  qWarning( "This system has no OpenGL support. Exiting." );//弹出警告对话框
  return -1;
 }

3.获得屏幕的高和宽.
一般我们可以通过QT的Qapplication类来获得系统的一些信息,载入头文件(#include     <qapplication.h>)我们就可以调用它,下例是使主程序充满整个屏幕的代码:
 Gui_MainForm gui_mainform;
 a.setMainWidget( &gui_mainform );
 gui_mainform.resize( QApplication::desktop()->width(), QApplication::desktop()->height() );  gui_mainform.show();

4.关于信号和槽.
 信号和槽机制是QT库的重要特性,可以说不了解它就不了解Qt.此机制能在各类间建立方便快捷的通信联系,只要类中加载了Q_OBJECT宏并用connect函数正确连接在一起即可,具体写法这里就不赘述了.但本人在使用过程中发现使用此机制容易破坏程序的结构性和封装性,速度也不是很让人满意,尤其是在跨多类调用时.鄙人的一孔之见是: 信号和槽机制不可不用,但不可多用.

5.QT程序中界面的设计.
 尽管Kdevelop是一个优秀的集成编译环境,可遗憾的是它不是一个可视化的编译环境,好在有Qdesigner来帮助我们完成界面设计,该程序的使用很简单,使用过VB,VC和Delphi的程序员能很快其操作方式,操作完成后存盘会生成一个扩展名为”ui”的文件,你接下来的任务就是把它解析成cpp和h文件,假设文件名为myform.ui,解析方法如下:
$uic myform.ui –I myform.h –o myform..cpp    //这句生成cpp文件
$uic myform.ui –o myform.h       //这句生成h文件.

6.由pro文件生成Makefile.
 对于Linux/Unix程序员来说编写Makefile文件是一项令人烦恼的任务,而qt程序员就没有这样的烦恼,一句$qmake –o Makefile myprogram.pro就可以轻松愉快的完成任务,而pro文件的编写也很容易,其核心是h和cpp文件的简单列表.具体写法请参考一下qt自带的样例和教程吧(在RedHat7.2中,它在/usr/lib/qt-2.3.1/doc/examples下),相对Makefile文件简直没有什么难度.

7.主组件的选择.
 一般我们在编程是使用继承Qwidget类的类作为主组件,这当然未可厚非.但在制作典型的多文档和单文档程序时我们有更好的选择—QmainWindow类,它可以方便的管理其中的菜单工具条主窗口和状态条等,在窗体几何属性发生变化时也能完美的实现内部组件缩放,这比用传统的几何布局类来管理要方便得多,而且不用写什么代码.关于它的具体细节请查阅QT的帮组文档,这里就不赘述了.

8.菜单项中加入Checked项.
在QT中,菜单项中加入Checked有点麻烦,具体写法如下:
1> 定义int型成员变量,并在创建菜单项中写:
displayGeometryMode=new QPopupMenu(this); //这里创建弹出菜单组displayGeometryMode
m_menuIDWire=displayGeometryMode->insertItem("Wire",this,SLOT(slt_Change2WireMode()));.//创建弹出菜单子项
displayGeometryMode->setItemChecked(m_ menuIDWire,true);//设定此子项为选择状态

2> 再在槽函数中写:
displayGeometryMode->setItemChecked(m_menuIDWire,false);//这里设定此子项为非选择状态

9.截获程序即将退出的信号.
 有些时候我们需要在程序即将退出时进行一些处理,如保存文件等等.如何截获程序退出的信号呢?还是要用到Qapplication类的aboutToQuit()信号,程序中可以这样写:
 connect(qApp,SIGNAL(aboutToQuit()),this,SLOT(Slot_SaveActions()));
在槽函数Slot_SaveActions()就可以进行相关处理了,注意,使用全局对象qApp需要加载头文件(#include <qapplication.h>).

10.弹出标准文件对话框.
 在程序中弹出文件对话框是很容易处理的,举例如下:
 QString filter="Txt files(*.txt)/n"  //设置文件过滤,缺省显示文本文件
   "All files(*)" ;    //可选择显示所有文件
 QString Filepathname=QFileDialog::getOpenFileName(" ",filter,this);//弹出对话框,这句需要加载头文件(#include < qfiledialog.h >)
 
 
11.将当前日期时间转化为标准Qstring.
QDateTime currentdatetime =QDateTime::currentDateTime();//需要加载头文件(#include < qdatetime.h >)
 QString strDateTime=currentdatetime.toString();

12.设置定时器
 所有Qobject的子类在设置定时器时都不必加载一个Qtimer对象,因为这样造成了资源浪费且需要书写多余的函数,很不方便.最好的办法是重载timerEvent函数,具体写法如下:
class Gui_DlgViewCtrlDatum : public QDialog
{
    Q_OBJECT
public:
    Gui_DlgViewCtrlDatum( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
    ~Gui_DlgViewCtrlDatum();
protected:
        void  timerEvent( QTimerEvent * );
};
void Gui_DlgViewCtrlDatum::timerEvent( QTimerEvent *e )
{
 //statements
}
再在Gui_DlgViewCtrlDatum的构造函数中设置时间间隔:
startTimer(50);//单位为毫秒

这样,每隔50毫秒,函数timerEvent便会被调用一次.

13.最方便的几何布局类QGridLayout
 在QT的几何布局类中,笔者认为QgridLayout使用最为方便,举例如下:
 QGridLayout* layout=new QGridLayout(this,10,10);//创建一个10*10的QgridLayout实例
 layout->addMultiCellWidget(gui_dlgslab_glwnd,1,8,0,7);//将OpenGL窗口固定在QgridLayout中的(1,0)单元格到(8,7)单元格中
 layout->addMultiCellWidget(Slider1,0,9,8,8);//将一个slider固定在单元格(0,8)到(9,8)中
 layout->addWidget(UpLimitLbl,1,9);//将一个label(UpLimitLbl)固定在单元格(1,9)中
 这样,无论窗体大小如何改变,它们的布局方式都不会发生改变,这比反复使用QvboxLayout和QhboxLayout要方便快捷许多.
 注:使用几何布局类需要调用头文件(#include <qlayout.h>)
14.字符串类Qstring和字符串链表类QstringList.
 Qstring是Qt中标准字符串类,下面列出它的一些常用函数:
toInt():将字符串转化成int类型.
ToFloat():将字符串转化成float类型.
ToDouble():将字符串转化成double类型.
Left(n):从左起取n个字符
Right(n):从右起取n个字符
SetNum(n):将实数n(包括int,float,double等)转化为Qsting型.

 QstringList是大家比较少使用的类,它可以看成Qstring组成的链表(QT中标准链表类Qlist的函数对它都适用,它的单个节点是Qstring类型的),特别适合与处理文本,下面一段代码就可见其方便快捷:
 Qstring strtmp=”abc|b|c|d”;
 QstringList strlsttmp;
 Strlsttmp =QStringList::split("|", strtmp);
 For(unsigned int I=0;I< Strlsttmp.count();I++)
 {
  cout<< Strlsttmp.at(I);
 }
 结果输出为:abc   b   c   d,也就是说,通过一个函数split,一行文本就被符号”|”自动分割成了单个字符串.这在文本处理时特别省力.(请参考c语言大全第四版中用”strtok”函数分割文本的例程,将双方比较一下)

15. QGLWidget类如何加入鼠标支持.
 QGLWidget类加入鼠标支持需要重载以下函数:
 void mousePressEvent(QMouseEvent*);
 void mouseMoveEvent(QMouseEvent*);
 void mouseReleaseEvent(QMouseEvent*);
请具体看一个实例:
 class Gui_WgtMain_GLWnd : public QGLWidget  {
 Q_OBJECT
public:
 Gui_WgtMain_GLWnd(QWidget *parent=0, const char *name=0);
 ~Gui_WgtMain_GLWnd();
protected:
 void initializeGL();
 void paintGL();
 void resizeGL( int w, int h );
 void mousePressEvent(QMouseEvent*);
 void mouseMoveEvent(QMouseEvent*);
 void mouseReleaseEvent(QMouseEvent*);
private:
 int m_nCnt;
};
void Gui_WgtMain_GLWnd::mousePressEvent(QMouseEvent* e)
{
 //statements
}
void Gui_WgtMain_GLWnd:: mouseMoveEvent (QMouseEvent* e)
{
 //statements
}
void Gui_WgtMain_GLWnd:: mouseReleaseEvent (QMouseEvent* e)
{
 //statements
}
其中, e->x();e->y();可以获得鼠标的位置, e->button()可以取得鼠标按键的状态(左中右键以及ctrl,alt,shift等组合键),灵活使用他们就可以在用鼠标操作OpenGL画面了.

 

QT跨平台编程入门学习笔记 1.开始学习 1. 学习的目的 为了学习界面编程; 为了巩固同步进行的C++知识和技巧; 为了了解跨平台。 2. 环境搭建 2.1 必备工具下载 QT源码安装包 http://download.qt.io 点击进入archive/ 点击进入qt/ 点击进入5.9/ 点击进入5.9.9/ 下载qt-opensource-windows-x86-5.9.9.exe 该安装包Windows 32位和6... 阅读详情

相关推荐

Qt SDK安装后在Mac OS上出现编译问题

如果您的应用程序使用了额外的依赖项,请确保这些依赖项已正确安装并在项目配置中正确设置。您可以在Qt Creator的"项目"菜单中的"构建设置"中检查和修改项目的依赖项。如果问题仍然存在,请尝试查看更多的错误消息和警告,并在互联网上搜索相关的解决方案。请按照官方文档或Qt官方网站上的说明进行安装。当在Mac OS上安装Qt SDK后,有时会遇到编译问题,这可能会妨碍您进行编程工作。的文件中,并使用Qt Creator打开该文件所在的目录作为项目。如果您的项目已经创建,但无法编译,请确保项目的配置正确。

PixelNinja的博客 352

QT/Kdevelop雕虫小技

1. 如何在Qt程序中加入OpenGL支持。在QT程序中加入OpenGL支持很简单,只需要在Kdevelop连接的库中加入“-lGL -lGLU”即可,如果需要glut支持,还可以加入“-lglut”。具体操作是在kdevelop集成编译环境中按下”F7”,在弹出的对话框中选择“Linker”一项,在输入栏输入你想添加的库即可,写法与gcc/g++一致。一般在类QGLWidget中使用OpenGL

冰封尘想的专栏 1944

Zemax实战:20×超高清变焦镜头设计全流程解析(从架构到制造)

本文详细解析了使用Zemax软件设计一款20倍变焦比、恒定F2.8光圈8K超高清镜头的全流程。从应对恒定光圈、宽光谱与8K解析力三大挑战的初始架构规划,到构建多重组态模型、分七阶段进行像差优化与公差分析,最终跨越制造鸿沟,为广播级影视与高精度工业检测应用提供了实战指南。

sun99的博客 551

QT 找不到 opengl

Qt 5.5.0 cannot find OpenGL functions Ask Question up vote 4 down vote favorite 2 I have a Qt project that uses OpenGL and compiles fine with Qt 5.4.0. Today I upgraded my Qt to 5.5.0 and my project ...

weixin_33975951的博客 1476

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

qq_41510657的博客 2610

有限时间 vs 固定时间 vs 预定时间滑模:稳定性分析与仿真验证方法对比(中)

有限时间滑模控制(FTSMC)和固定时间滑模控制(FixTSMC)是两种重要的控制策略,旨在实现系统状态的快速收敛。FTSMC通过设计滑模面和控制律,确保系统状态在有限时间内收敛到原点,但其收敛时间与初始状态相关。FixTSMC则进一步优化,使收敛时间与初始状态无关,适用于高动态环境,具有更强的鲁棒性和更平滑的控制信号。两种方法均通过李雅普诺夫函数证明其稳定性,并通过仿真验证其有效性。FixTSMC在工程应用中更为可靠,尤其适合安全关键系统。

Lyajpunov的博客 3224

安装的qt 运行程序出现错误 解决办法

当我运行程序是总是出现这样的错误 ,经过查找最终发现是环境变量的问题。估计很多初学者在这都会出现问题 今天就按照我的解决办法希望能对你们有用 g++.exe: ..draggableiconsdragwidget.cpp: No such file or directory g++.exe: no input files mingw32-make[1]: *** [debug/dragwid

ningbo520的专栏 9213

Chrome红页误报?手把手教你通过Search Console快速解除安全警告

本文详细解析了Chrome红页误报的常见原因及解决方案,重点介绍如何通过Google Search Console快速解除安全警告。内容涵盖误报诊断、技术修复、申诉技巧及长效预防措施,帮助网站管理员有效应对Google Safe Browsing的误判问题,确保网站安全状态快速恢复。

a1b2c的博客 987

Qt没有被正确安装,请运行make install问题的解决

Qt没有被正确安装,请运行make install问题的解决

hijk7的博客 493

PX4环境git submodule update --init --recursive失败的解决办法

最近开始搭建PX4环境,搭建是需要从github下载工程,然后使用语句git submodule update --init --recursive更新工程子模块,但往往由于网络原因这一步需要很久,甚至会失败。因为github是外网,在上面下载代码会受到很大限制,往往会出现下面的问题: 即无法连接到github,查阅了相关资料后,我发现了解决更新子模块失败的方法: 1.打开你下载的PX4源码,即Firmware文件夹,找到其中的.gitmodules,如下图: 2…gitmodules有以上格式,path

qq_36903625的博客 1万+

无迹卡尔曼滤波(UKF)推导

提出,使用了一种不同的方法来计算误差协方差矩阵。它不使用(连续时间)黎卡提方程(Riccati Equations,形如。的一类非线性方程)或(离散时间)协方差传播和更新规律。关键的思想是基于一组特殊的样本点来估计误差协方差,这些点被称为。无迹卡尔曼滤波(Unscented Kalman Filter),最初由。点(Sigma Points),这些点直接通过原始非线性模型传播。无迹变换表示有三个特殊样本点的高斯分布,称为。

生活如此美好,致敬每一个热爱“热爱”的人! 1776

QT安装OpenCv步骤流程及相关问题(基于Windows下的QT Creator编程)

1、Qt软件2、CMake3、OpenCV。

Mr_zhang1911116的博客 5991

SAP 基于生产订单行项目外部加工创建采购申请时的一个增强需求

摘要 本文介绍在SAP系统中实现生产订单外协工序自动生成采购申请(PR)时,将指定文本写入PR抬头文本的技术方案。关键点包括: 业务背景:通过CO02事务码将工序标记为外部加工,系统自动生成PR,需在生成时自动写入抬头文本。 技术难点: PR抬头文本存储在STXH/STXL而非EBAN表 标准增强点ME_PROCESS_REQ_CUST在外协场景可能不触发 推荐方案: 使用BAdI ME_REQ_POSTED,在PR过账时点执行 通过Text Object EBANH和Text ID(如B01)写入文本 实

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 623

mac m1设备上安装Qt并使用qt编程遇到的问题以及解决方式

简单介绍M1平台使用qt编程会遇到的问题以及解决方式

v俊逸 8636

uniapp+renderJS+google map开发安卓版APP非小程序

uniapp+renderJS+google map开发安卓版APP非小程序,google map小叉号不显示,google map自定义marker右上角的小叉号如何去掉,uniapp+google map不显示

renkai721的专栏 667

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VS2022配置QT6.4.3的详细步骤(2023年最新版安装教程)

1、发表该文章的原因本文包含了QT在线安装器的安装过程,QT的安装过程,QT的环境配置,VS的环境配置QT在线安装器的百度云资源希望可以帮助大家解决安装过程中出现的各种问题。1、发表该文章的原因。

H0893_888的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

73 QT编程入门

0 引言 最近开始在QT下编程,记录一下遇到的问题以及解决方法。 1 安装下载及学习资料 (1)安装下载链接 安装链接: https://blog.youkuaiyun.com/qq_23473839/article/details/80523318不同版本的安装包下载链接: http://download.qt.io/archive/qt/ (2)学习资料链接 QT编程指南: htt...

weixin_30247307的博客 208

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

深度学习工具包 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")

【亲测免费】 Qt之串口编程(添加QSerialPort模块)

Qt之串口编程(添加QSerialPort模块) 【下载地址】Qt之串口编程添加QSerialPort模块分享 Qt之串口编程(添加QSerialPort模块)本资源文件提供了在Qt中进行串口编程所需的QSerialPort模块的详细安装和使用指南 ...

gitblog_06503的博客 417

Linux系统 C/C++编程基础——基于Qt的图形用户界面编程

本文介绍Qt是一个跨平台的C++开发库,设计思想是同样的C++代码无需修改就可以在Windows、Linux、Mac OS等平台上使用。Qt起初是由Trolltech(奇趣科技)公司开发的跨平台C++图形用户界面应用程序开发框架。

weixin_55767624的博客 2310

QT 6.3和Visual Studio 2022详细安装及配置教程

介绍了QT 6.3和Visual Studio 2022详细安装及配置教程,特别是汇总解决了一些疑难问题。

vcjmd的博客 1万+

树莓派上使用QT录音找不到设备、ffmpeg编码、视频处理等+部署自启动+双击不启动问题、QT编程问题等各种疑难杂症

1、 安装完QT后,我们自己的声卡驱动有可能无法采集声音,这里有个妙招: 安装audacity 软件,将依赖的库补充齐全。 2、安装fdk-aac: 在安装ffmpeg前,需要安装fdk-aac,因为最新版的ffmpeg在使用AAC编码时会出现不支持s16的PCM编码的情况: 下载地址:https://www.linuxfromscratch.org/blfs/view/svn/multimedia/fdk-aac.html 目标机器上缺省configure之后make会出现共享代码相关的...

maum61的专栏 4000

ubuntu安装qt

Ubuntu安装qt 到qt官网下载“qt-opensource-linux-x64-5.9.1.run” 分别安装g++, build-essential, libglq-mesa-dev, libglu1-mesa-dev freeglut3-dev 输入指令:”sudo apt-get install g++” -> “sudo apt-get install build-essential” -> “sudo apt-get install libgl1-mesa-dev” -&

Alena111的博客 4675

8g ubuntu 树莓派4b_在树莓派4b下利用QT进行c++编程

本篇文章主要讲一下在树莓派4b中,如何安装、配置QT,并以超声波测距为例,演示如何通过在QT中用c++编程控制超声波测距模块以及相关的接线方法。我会尽可能做到详细。 本篇文章适合没有QT使用经验的同学(比如我),大神肯定是不屑于讲这些具体操作的。此外,树莓派的一些操作,对于使用Linux也有一定参考意义。1.安装并配置QT(1)在命令行中输入以下命令: ...

weixin_31921223的博客 1274

linux qt4卸载,linux卸载QT4和安装QT5的方法

由于项目中需要用到QT的程序,因此安装QT5的软件支持库和QT开发环境是必须的:apt-get insatall qt5-defaultapt-get insatall qt-creatorQT5的库和QT Creator开发环境是独立运行的,如果QT Creator缺少QT5的库则程序写好了没法编译;如果只装QT5不装QT Creator开发环境的话则没有办法写程序,只能通过命令行编译已经写好的...

weixin_33701632的博客 628

QT creator 编程中常见问题记录

QT creator 编程中常见问题记录  qtCreaotr如果是自己下载二进制安装包  最好以普通用户安装到自己的目录下,否则权限问题,环境变量问题很让人头痛  另外 有时安装某些QT对应发行版的软件管理器会自动帮你安装一个QMAKE  这时如果与QTcreator的QMAKE不对应,会出现很隐蔽的错误  所以要保持系统只有一套QMAKE    出现#in

lt66ds的专栏 883
下一篇: TSE下载的地方
AgentAI
博客等级 码龄22年 0粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值