Matlab如何查看运行时调用的库代码和自带代码区分并监测进程

问题背景

在尝试将运行好的matlab代码群转为C++代码群的时候,在matlab自带的转换功能基础上,我需要考虑哪些代码是matlab内生的,哪些是我文件夹(也即提供的代码库包)中的呢
如果可以区分的话,我就可以一个函数一个函数转换,然后注意输入输出即可了。
同时假设这个库里面.m文件特别多(一千多个),哪些函数是真正需要的呢

检测代码调用

可以采用matlab的profile函数:

% profile的matlab代码
profile on
profile viewer
p = profile('info');

这个函数可以监测所有的后台信息,包括调用的函数和位置,最后也能生成html的报告《探查摘要》
探查摘要的html

去除matlab内生函数和重复项

可以通过调用函数的来源地址判别是否是自带的库中的:

% get p 中的 a 中的文件名,并且和你当前库的地址相匹配
    m=a(i).FileName;
    if length(m)>50
        mm=m(1:51);
        if mm==strcom
            fileValues{k} = m;
            k=k+1;
        end
    end

紧接着删除重复调用(某些代码中可能存在多个函数被调用的情况)并输出
这样可以确定库中的哪些函数没有被调用,再转为C++的时候可以很省力。

% 删除重复项并且把调用的m文件输出为csv
t2=unique(fileValues2');
fileID = fopen('functions used.csv', 'wt');
for row = 1:numel(t2)
    fprintf(fileID, '%s\n', t2{row});
end
fclose(fileID);

其中在本库中被包含的m文件我才记录在上述csv中,而matlab安装时自带的函数,本身在转换成C++的时候也会自动转换,就不一一列出了。
比如在原库存代码中数量特别多,达七百多个的时候,大多数均可以删除,会增加效率

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值