我有两个带有两个功能的* .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
答案 0 :(得分:0)
如果永远不会调用calculate
- >这意味着您的files
变量为空 - >你确定你以同样的方式调用主程序吗?即两个电话中的folder_path
是否相同?
如果您在Windows上可以从dos提示符运行,并且您将看到通常写入终端的错误/ disp / fprintf消息(因此,为了帮助调试添加更多内容,例如folder_path
, num_files
等......