导航

    蓝鲸ROS机器人论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 热门
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision

    Matlab 动态生成执行语句及构造动态输入变量名

    技术交流
    动态语句 matlab 动态变量名
    1
    1
    3426
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • frank
      frank 最后由 编辑

      对于matlab,自动化benchmark某子功能程序块时需要将一些变量dump出来,怎么将dump出来的变量放在一起调试呢?dump变量是用save,load变量就用load语句,但是保存的变量名是一样的时候就不能同时load了,会发生覆盖。如果每个运行实例中,这个变量的名字都是不同的,就不存在这个问题了。下述代码段将根据数值变量num的值,动态生产A变量副本的名字,并保存A变量副本到不同的文件中,num变量通常是测试实例的编号,这样后续调试时可以快速定位当时运行的benchmark实例

      str_temp=sprintf('A_%d=A',num);
      eval(str_temp);
      str_temp=sprintf('save(''A_%d.mat'',''A_%d'');',num,num);
      eval(str_temp);
      

      用sprintf动态生产语句,eval执行语句,就可以了,留意双引号与单引号在matlab中的区别。
      利用字符串格式化函数sprintf来构造动态执行语句,对于自动化脚本是一个根本性地技巧。特别是matlab,因为它的很多库函数的输入变量都用字符串表示。比如,下文的代码段,将自动批量load一组dump出来的变量

      for num=1:666
            load(sprintf('A_%d.mat',num));
      end
      
       利用这些特性,甚至可以在matlab中直接执行python程序,有机会我将提供一个例子
      
      1 条回复 最后回复 回复 引用 0
      • 1 / 1
      • First post
        Last post
      Copyright © 2015-2023 BlueWhale community