使用matconvnet报错,尝试将 SCRIPT vl_nnconv 作为函数执行

  神经网络课需要使用这个matconvnet工具箱,但是matconvnet官网只提供了源码,windows,macos或者Linux用户都需要先把源码编译成库(在matlab中这个库就是mex文件,不知道我的理解对不对)。

  按照官网上的步骤,成功地编译了matconvnet,并通过了vl_testnn的所有测试。官网guide:https://www.vlfeat.org/matconvnet/install/

  我的环境是matlab2020b,VS2019

  但是,在运行测试代码的时候会有如下报错:经过一番思考,解决了这个bug。

  

  奇了怪了,我不是都通过测试了吗?这个v1_nnconv.m到底是什么?打开这个文件后我很吃惊,因为这个文件通篇都是注释,只有在最后一行会捕获notfound错误。

  

  结合之前的报错我认为这个错误的产生原因如下:

  1. 首先我们使用了VS2019编译出了二进制文件,这些库位于/mex/文件夹下

  2.matconvnet工具箱的逻辑是这样的,当你没有编译成功的话,它就会提示没有编译成功。但是如果你编译成功了,就会调用/mex/文件夹下的库。

  3.然而,由于bug(我也不知道为什么会产生),matlab认为你调用的时候调用的是上面那个全是注释的脚本。然后发现这他喵不是个函数(因为函数和脚本的后缀都是.m ...)就报错了。


  网上有人通过重新运行setup脚本解决了,但是我重新运行了没用。我的解决手段是这样的。

  1.不管三七二十一,新建一个文件夹,把你的代码拷贝进去。

  2.运行代码,matlab会说:俺找不到XX函数,但是XX地方有。但这个XX地方就是之前找错的地方!!matlab猪猪。

  3.最重要的一步,将之前编译的mex文件夹拷贝到新建的文件夹中,在matlab中右键,添加到路径!这样这些编译好的库matlab都能找到了。

  4.再次运行代码,可能还会有很多个报错,会说少了一些函数。别急这些函数就是正儿八经定义在.m文件中的函数了,从matconvnet代码文件夹中复制过来即可!

  5.再跑一遍,成功!

  我的文件夹如下:跑的是test1.m脚本。

  

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据您提供的信息,问题可能是由于未正确设置 MATLAB 的当前工作目录或者添加了不正确的文件路径引起的。 在 MATLAB 中执行函数时,MATLAB 默认会在当前工作目录中查找函数文件。如果函数文件不在当前工作目录中,就会出现文件找不到的错误。 根据您提供的路径信息,函数文件 `vl_nnconv.m` 位于路径 `D:\博士资料\代码CT\2023pwls+GSC\MCP_MSI_CS_Demo-main\MCP_MSI_CS_Demo-main\Utilities\matconvnet-1.0-beta25\matlab\vl_nnconv.m`。请确保您在 MATLAB 中将当前工作目录设置为 `D:\博士资料\代码CT\2023pwls+GSC\MCP_MSI_CS_Demo-main\MCP_MSI_CS_Demo-main\Utilities\matconvnet-1.0-beta25\matlab` 或者添加正确的路径到 MATLAB 的搜索路径中。 您可以使用 `cd` 命令将当前工作目录更改为正确的路径,例如: ```matlab cd('D:\博士资料\代码CT\2023pwls+GSC\MCP_MSI_CS_Demo-main\MCP_MSI_CS_Demo-main\Utilities\matconvnet-1.0-beta25\matlab') ``` 或者使用 `addpath` 命令将路径添加到 MATLAB 的搜索路径中,例如: ```matlab addpath('D:\博士资料\代码CT\2023pwls+GSC\MCP_MSI_CS_Demo-main\MCP_MSI_CS_Demo-main\Utilities\matconvnet-1.0-beta25\matlab') ``` 执行以上操作后,再次尝试执行 `vl_nnconv` 函数,应该能够找到并执行函数。 请注意,确保给出的路径是正确的,并且包含所需的函数文件。如果问题仍然存在,请检查文件路径和文件名的拼写,以及确保您有正确的访问权限。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值