将MATLAB生成神经网络使用Visual Studio构建

第一步:生成代码

下面是生成的代码,其中examples中为main.c和main.h,将其复制出来,将所有.c和.h文件放在同一目录中(不放也可以,构建项目时注意子文件即可)
在这里插入图片描述

第二步:编写CMakeLists.txt

编写CMakeLists.txt文件,创建build目录,用于存放工程(当有多级目录,请自主添加子CMakeLists.txt)
下面展示一些 内联代码片

参考例子:这里的C文件一定要与生成的文件一致

cmake_minimum_required(VERSION 3.26.3)
project(demo)
include_directories(${PROJECT_SOURCE_DIR})
add_executable(demo main.c classify_fun.c classify_fun_data.c classify_fun_initialize.c classify_fun_terminate.c conv2dDirectOptimizedColMajor.c poolingOperation.c predict.c rt_nonfinite.c rtGetInf.c rtGetNaN.c)

第三步:配置生成Visual Studio工程

使用GUI配置,打开CMAKE程序
分别选择工程目录和build项目构建目录(注意,在第一步中,我已经将所有.c文件和.h文件当放到了同一个工程目录中)
在这里插入图片描述
点击Configure配置选择对应版本的Visual Studio,这里是2019
在这里插入图片描述
然后点击Generate生成工程,生成的工程就在工程目录的build文件夹下
在这里插入图片描述

第四步:配置使用Visual Studio工程

打开生成的工程的main.c文件,其中有一个函数:
数组dv就是需要传入的特征值,自定义即可

void main_classify_fun(void)用于分类(函数名和MATLAB的函数有关)
{
	double dv[6];//特征值,需要归一化后的值,自定义即可,我这里特征值有6个
	double label0;
	//此函数好像没用,里面将数组清空了,注释掉即可
	//argInit_6x1_real_T(dv);
	label0 = classify_fun(dv);//分类得到标签值,即真正分类
	printf("label = %f\r\n", label0);
}

归一化函数(float类型)

// 归一化函数,在上面函数传入数组前调用
void normalize(double arr[], int size)
{
  double min_val = arr[0];
  double max_val = arr[0];

  // 找到数组中的最小值和最大值
  for (int i = 1; i < size; i++) {
    if (arr[i] < min_val) {
      min_val = arr[i];
    }
    if (arr[i] > max_val) {
      max_val = arr[i];
    }
  }
  // 对数组进行归一化
  double range = max_val - min_val;
  if (range != 0.0) {
    for (int i = 0; i < size; i++) {
      arr[i] = (arr[i] - min_val) / range;
    }
  }
}
因此完整的使用流程应该为:
//该数据为原始数据,需使用函数归一化
double mydv1[6] = {-0.304063600000000,10.1322600000000,-4.65672200000000, 
				-16.5648900000000, 23.9236600000000, 6.24427500000000
                    };
void main_classify_fun(void)
{
//先对数据归一化
  normalize(mydv1, 6);
  double dv[6];
  double label0;
  //argInit_6x1_real_T(dv);
  //传入函数即可
  label0 = classify_fun(mydv1);
//打印分类标签
  printf("label = %f\r\n", label0);
}

点击运行即可,可能会保存,找不到启动项,此时右键工程设为启动项即可。
在这里插入图片描述
运行示意图,我这里将归一化数据打印出来了,可以看到与matlab中的特征值对应的标签为4。(这个有一定误判,准确率与数据集和模型有关,这个不太懂)
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
matlab在关联编译器的时候 会出现找不到编译器的问题 原因是matlab要找windows sdk的mt exe 本文件修改方法也是根据wiills的那篇“matlab找不到编译器的问题”(matlab无法找到vs2012)的修改方法进行的 请参考:http: download csdn net download wiills 4621079 本次修改如下说明: 1 本次为:Matlab版本为Matlab 2013b(64bit版本)无法关联visual studio 2013编译器的解决方法 2 相对于wiills的修改来说 使用读注册表的方法(不删除添加任何语句 只是修改) 而不是使用绝对路径给出地址 理论上讲如果VS2013的安装路径不是默认的 只要版本对的话把这些文件添加进相对性的目录也是可以关联的 3 使用方法 复制wiills的说明了 哈哈 : 1 把附件相关的5个文件添加到matlab bin win64下面的2个相关目录 2 在matlab 里面运行 mbuild setup 然后选 y 再选择2013的那个项目 再选y 3 这是应该成功了 4 mex setup也是一样的 如果是Matlab 2013b 32位版本的可以复制出matlab bin win64两个相关目录下(mexopts目录下的:msvc110opts stp msvc110opts bat msvc110engmatopts bat和mbuildopts目录下的:msvc110compp bat msvc110compp stp)这五个文件 VS2012的支持文件 对照本文下面给出方法自行修改即可 ">matlab在关联编译器的时候 会出现找不到编译器的问题 原因是matlab要找windows sdk的mt exe 本文件修改方法也是根据wiills的那篇“matlab找不到编译器的问题”(matlab无法找到vs2012)的修改方法进行的 请参考:http: download csdn net downlo [更多]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值