Matlab Application Compiler省略了函数调用

时间:2017-09-14 13:17:33

标签: matlab matlab-compiler

我有两个带有两个功能的* .m文件

第一个函数是main(folder_path) 第二个是calculate(file)

函数main调用calculate并使用fprintf将结果写入文本文件

当我在Matlab中运行脚本时,它会将正确的浮点值写入文本文件。但是,当我使用Application Compiler并创建* .exe文件时,文本文件中的所有结果都是NaN

我插入了一些调试输出并注意到,使用* .exe时,calculate中没有输出。所以我想函数calculate永远不会被调用。

这种行为有什么理由吗?我错过了什么吗?

% file main.m
function main(folder_path)
wildcard = '*.h5';

files = dir([folder_path , wildcard]);

% store results
[num_files, ~] = size(files);
vec_average = zeros(num_files);

for index = 1:size(files)
    average = calculate([folder_path, files(index).name]);

    % store in vector for matlab plotting
    vec_average(index) = average;
end

% calculate avg value from all files
average = mean(vec_average);

% write to text files, for jenkins plotting
[file, msg] = fopen('average.property', 'w');
if file == -1
    error(msg);
end
fprintf(file, 'YVALUE=%.5f\n', average(1));
fclose(file);
end

下一个文件:

% file calculate.m
function [average] = calculate(file_path)
% read datasets - loop over h5 file
data = h5read(file_path ,'/datasets' );

num_elements = data.num_elements;
elements = data.elements;

vec_y = [];

for index = 1:size(elements)
    vec_y = [vec_y, elements(i)];
end

average = mean(vec_y);
end

1 个答案:

答案 0 :(得分:0)

如果永远不会调用calculate - >这意味着您的files变量为空 - >你确定你以同样的方式调用主程序吗?即两个电话中的folder_path是否相同?

如果您在Windows上可以从dos提示符运行,并且您将看到通常写入终端的错误/ disp / fprintf消息(因此,为了帮助调试添加更多内容,例如folder_pathnum_files等......