我有一个生成测试数据的函数,
function [A B] = generate_test_data()
A = linspace(0.1, 15, 400)';
eps = (0.2*rand(400,1)) - 0.1;
B = sin(A) ./ A - eps;
end
我有另一个函数将2-col矩阵写入文本文件
function write_to_file(file_name, A, B)
fid = fopen(file_name,'w');
fprintf(fid, '%f\t%f \n', [A B]');
fclose(fid);
end
现在,我想使用以下功能,
write_to_file('test_data.txt', generate_test_data());
但是,它产生了以下错误,
??? Input argument "B" is undefined.
Error in ==> write_to_file at 7
fprintf(fid, '%f\t%f \n', [A B]');
我可以进行哪些修改?
答案 0 :(得分:2)
你定义write_to_file
取三个参数,但你用两个参数调用它。
您可以预先初始化A和B,然后将其传递给函数,如下所示:
[A B] = generate_test_data();
write_to_file('test_data.txt', A, B);
(也许有一种替代方案。)
您还可以将函数设置为将第二个参数作为单元格,其中包含成员A
和B
,在这种情况下,您可以按如下方式定义函数:
function [C] = generate_test_data()
A = linspace(0.1, 15, 400)';
eps = (0.2*rand(400,1)) - 0.1;
B = sin(A) ./ A - eps;
C = {A B};
end
和
function write_to_file(file_name, C)
A = C{1}; B = C{2};
fid = fopen(file_name,'w');
fprintf(fid, '%f\t%f \n', [A B]');
fclose(fid);
end
然后你就像现在一样调用函数,即write_to_file('test_data.txt', generate_test_data());
在这种情况下应该起作用。