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

autoware 激光-相机联合标定

autoware进行激光-相机联合标定 ~~~ 刚开始进行激光-相机联合标定的时候,出现了不少问题,在此记录一下整体标定流程,以防忘记。在此,特别感谢佳明师弟,在录制数据集时提供的帮助。 ~~~ 0.系统配置: Ubuntu18.04系统 ROS Melodic opencv 3.2.0 vlp-16 一.安装autoware 这部分网上教程挺多的,但我在编译的过程中仍存在不少bug,唉~_~。 二.安装calibration_camera_lidar,从a...

nuo112的博客 1万+

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

【实战解析】RTL8306MB交换芯片驱动开发中的RMII接口调试陷阱

本文深入剖析了RTL8306MB交换芯片驱动开发中RMII接口的典型调试陷阱。通过一个工业网关项目的实战案例,揭示了因硬件原理图设计疏忽导致TX_EN与CRS_DV信号线错接,从而引发网络“哑火”的根本原因。文章详细展示了使用示波器从时钟、数据到控制信号的系统性排查方法,并总结了关键的设计警示与自查清单,为嵌入式网络开发中的软硬件协同调试提供了宝贵经验。

qqq44的博客 1028

手把手教你用Three.js+Vue打造3D机房可视化系统(附完整代码)

本文详细介绍了如何使用Three.js与Vue 3构建企业级3D机房可视化系统。从技术选型、项目架构设计到3D场景构建、设备建模与渲染策略,提供了完整的开发方案和实战代码。重点讲解了如何实现设备状态实时监控、交互操作与性能优化,帮助开发者快速掌握3D可视化开发的核心技术。

ttt77的博客 315

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

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

ningbo520的专栏 9213

1.30 Cubemx_STM32H743 SD_Card纳入文件管理系统

Cubemx_STM32H743 SD_Card纳入文件管理系统1、简介2、CubeMX配置 1、简介 和前面文章原理其实一样的。 1.29 Cubemx_STM32F429\H743 nandflash、spifalsh纳入文件管理系统 现在一并将SD卡、NandFlash、SPIFlash一并作为文件管理。 下面直接介绍SDcard,其他参考前面文章。 2、CubeMX配置 ...

oDuanYanGuHong的博客 1079

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

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

hijk7的博客 493

Jetson AGX Orin和Drive AGX Orin相机的关联分析和编程指南

通过适当的相机接口和连接,以及使用适当的软件开发环境,开发人员可以在这些平台上实现相机功能。Jetson AGX Orin和Drive AGX Orin是NVIDIA推出的两款强大的计算平台,用于自动驾驶和人工智能应用。Jetson AGX Orin和Drive AGX Orin平台提供了强大的计算能力,使开发人员能够实现复杂的相机功能和算法。以上只是一些示例,Jetson AGX Orin和Drive AGX Orin平台提供了丰富的开发资源和工具,可用于实现各种复杂的相机应用。显示图像在一个窗口中。

CyberLynxO的博客 1119

NVIDIA A100驱动及CUDA安装指南

NVIDIA A100驱动及CUDA安装指南:详细介绍了在Ubuntu系统下安装A100显卡驱动和CUDA工具包的完整流程,包括环境准备、驱动安装、CUDA配置及性能优化建议。特别推荐猿界算力平台提供开箱即用的A100算力租赁服务,具备专业团队支持、灵活租期和实惠价格等优势。文末通过PyTorch测试验证了A100设备的可用性,展示了80GB显存的强大计算能力。

2401_89353317的博客 1511

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

1、Qt软件2、CMake3、OpenCV。

Mr_zhang1911116的博客 5991

CAPL编程规范与最佳实践

通过本文的学习,读者应该对CAPL编程规范与最佳实践有了初步的了解,并能够编写高质量的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1747

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

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

v俊逸 8636

《囚徒健身》 六艺,十式

文章目录《囚徒健身》 六艺,十式1、六艺,十式2、优缺点3、手臂和上半身 《囚徒健身》 六艺,十式 1、六艺,十式 1、俯卧撑: 2、深蹲: 3、举腿: 4、引体向上: 5、桥: 6、倒立撑: 十式就是每个动作分拆为十个不同的动作等级,进行训练 每一式里面,又根据做的组数和个数,分成三层,初级,中级,高级 依次循序渐进,每完成上一个动作的高级,则向下一个动作前进 2、优缺点 优点 : 六个动作都是很常见的,日常的动作,不太需要依赖什么器械,随时随地都可以练习,很方便 这些动作可以覆盖到全身大部分

简简单单Onlinezuozuo 4564

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

H0893_888的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【亲测免费】 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、付费专栏及课程。

余额充值