编程过程中所出现的问题

以下记录,在编程上设计上的问题,会持续记录:

2021/04/25

1.一个功能一定版

2.如果写共用函数库,一定不要用小众的语言等去写,如现在,界面完全用qt,逻辑,算法完全用c++写

3.避免结构冗杂,一个功能一个接口类

2021/05/18

对于项目,可分为几大块,

(1)输入输出层

 通常用两个类完成,一个输入类,一个输出类,用typedef class XXX outputParam,typedef class XXXX inPutParam,其他界面调用都用这个outputParam和inputParam,这两个类最好是单例模式,通常用inputOutput

(2)核心代码底层,每一个功能使用一个类或者一个cpp文件,通常用core

(3)接口层,作为核心算法代码底层的接口,对于同一种类型的不同功能继承相同的接口,后期迭代时候只需要更改核心代码即可,通常用interface文件夹

(4)业务逻辑层,通常使用一个类写即可,比如信号生成,可以用signalGener作为一个业务逻辑层,通常用一个文件即可

(5)项目版本功能,通常用def.h,里边一个功能用一个宏定义控制,如 FOR_TEST ,FOR_FUN_CALCECHODATA,这种类似的。这些宏所影响的是输入输出参数的类型,还有核心代码底层的选择,通常用def

(6)适配层,适配不同的项目,操作系统等所使用,通过不同的宏,实例化出特定的类做适配。通常用adapt文件夹

(7)工具层,包括网络,日志,设计模式类,类型转换,时间,任务管理线程,线程,锁等等的类,通常用utils

(8)第三方的代码,通常用3rdparty的文件夹

(9)build,作为构建出程序的位置

(10)关于如何将计算好的数据传输到前端显示,这里也是通过观察者模式,当有数据时候,使用单例的输出类进行提取做为前端显示,当然这个单例输出类中做了锁操作和线程安全,也可以通过生产者消费者模式控制生成一个显示一个

  

关于,项目迭代有几点感悟

有几种办法

1.使用多个vcxproj,这种会使项目变得越来越冗杂

2.使用,接口不变,更改adapt中适配类的办法,通过同时更新新的core中的代码,以及apdapt中和版本功能控制def的代码实现,个人比较倾向于这一种,功能通过宏控制,方便将代码分块

以后的编程过程,也会按照这种框架分类编写了,

这就是干程序员的第三年体会出的结构

2021/05/25

QML的不显示的问题

打包问题,mingw,qml中控件不显示,更换Qtcore.dll文件,第二部,将qml中的文件拷贝到exe所在的目录下,这样基本就可以显示了

inno setup 这个软件文件夹的递归制作,只需要改一下这个desrdir

2021/06/21

Qt代理的问题

参考的网站:
QTableview常用几种代理总结_hu_linux的博客-CSDN博客_qtableview 代理

思路:

1.先设计各种代理

class Delegate : public QStyledItemDelegate{

QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;

void setEditorData(QWidget *editor, const QModelIndex &index) const override;

void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;

void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override;

}

2.为其中一列设置一个特定的代理

table->setItemDelegateForColumn(0,Delegate0);

 table->setItemDelegateForColumn(1,Delegate1);

Qt的rect 的adjust参考:

QT之QRect函数QRect::adjust()函数解析_灵客风-CSDN博客_qrect 缩放

2021/07/08

软件设计

1.桥接模式:接口和实现分开

2.抽象工厂模式:

3. 建造者模式:

4.命令模式:多个模型计算

5.中介模式:双方通信

6.考虑每个模型成为一个组件,检查各个组件是否安装成功用visitor模式

2022/01/20

工作流开发模式

通信线程(指令者):

1.和上层ui的通信

2.和下层硬件通信

处理线程(中间层执行者):

1.业务处理,分状态,一定要根据状态想好要怎么处理,一定要每种状态定义清除

硬件处理(下层执行者):

整个软件结构可以为

 ui层              

 处理层

 管理层

 中间层 

 CAN通信层

 FPGA逻辑层

 硬件层

通用化设计

日志

数据库

等通用

上层APP应用用rpc交互

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用MATLAB进行Fisher分类编程中,可能会遇到以下问题: 1. 数据预处理:在进行Fisher分类之前,首先需要对数据进行预处理,包括数据清洗、特征提取和特征选择等。在实际操作中,可能会遇到数据质量不高、特征冗余等问题,导致分类效果不佳。 2. 特征选取:Fisher分类算法依赖于选择合适的特征来进行分类。在实际编程中,需要选择最相关和最具判别性的特征。然而,如何确定哪些特征是最相关和最具判别性的,并没有统一的标准,需要根据具体问题和数据集来进行选择。 3. 参数选择:Fisher分类算法中存在一些参数需要选择,如投影子空间的维度、类别的权重等。这些参数的选择对分类结果有着重要影响,但如何选择合适的参数并没有明确的指导,需要进行反复实验和调参。 4. 数据量不平衡:在实际问题中,各个类别的样本数量可能存在不平衡。这会影响分类器的性能,导致对样本数量较少的类别分类效果不佳。解决这个问题可以采用过采样、欠采样或集成学习等方法。 5. 代码实现:编写Fisher分类器的代码需要考虑很多细节,如矩阵运算的实现、特征向量的计算和分类决策的实现等。编写代码过程中可能会出现错误,需要进行调试和修正。 综上所述,MATLAB Fisher分类编程中可能会遇到数据预处理困难、特征选取困难、参数选择困难、数据量不平衡和代码实现问题等。针对这些问题,可以结合实际情况进行调整和优化,以提高分类效果和代码实现的准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值