我在我的 C# 控制台应用程序中集成了从 matlab 生成的 dll 文件。当我运行 C# 控制台应用程序时,控制台中只会显示部分输出。如何生成完整的输出?我在 C# 控制台应用程序和 matlab 中的输出也略有不同,可能是什么原因?
matlab 文件使用 fprintf 来显示数据。我在 C# 中的代码是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using shoes30;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
namespace shoes_try
{
class Program
{
static void Main(string[] args)
{
shoes30.shoed_desc obj = new shoes30.shoed_desc();
MWArray img = "C:/Users/abcd.a/Desktop/dressimages/T1k5aHXjNqXXc4MOI3_050416.jpg";
obj.shoes(img);
}
}
}
我在控制台中只得到部分输出。我的输出有点长,它包含 1000 个数据,我只得到最后大约 150 个数据。
MATLAB中的代码:
tic;
% for the sparse vectors, just save the nonzero indices and their corresponding values
ttemp = color_weight_vec_coarse(:);
[m n] = size(ttemp);
fprintf([num2str(m) ' ' num2str(n) '\n']);
nonzero_idx = find(ttemp);
fprintf([num2str(numel(nonzero_idx)) '\n']);
for x = 1:numel(nonzero_idx)
% zero based indexing
fprintf([num2str(nonzero_idx(x)-1) ' ' num2str(ttemp(nonzero_idx(x))) '\n']);
end
% for the sparse vectors, just save the nonzero indices and their corresponding values
ttemp = color_weight_vec_fine(:);
[m n] = size(ttemp);
fprintf([num2str(m) ' ' num2str(n) '\n']);
nonzero_idx = find(ttemp);
fprintf([num2str(numel(nonzero_idx)) '\n']);
for x = 1:numel(nonzero_idx)
% zero based indexing
fprintf([num2str(nonzero_idx(x)-1) ' ' num2str(ttemp(nonzero_idx(x))) '\n']);
end
ttemp = shoe_grad_pyramid_shape(:);
[m n] = size(ttemp);
fprintf([num2str(m) ' ' num2str(n) '\n']);
for x = 1:m
for y = 1:n
if y<n
fprintf([num2str(ttemp(x,y)) ' ']);
else
fprintf([num2str(ttemp(x,y)) '\n']);
end
end
end
ttemp = shoe_grad_pyramid_texture(:);
[m n] = size(ttemp);
fprintf([num2str(m) ' ' num2str(n) '\n']);
for x = 1:m
for y = 1:n
if y<n
fprintf([num2str(ttemp(x,y)) ' ']);
else
fprintf([num2str(ttemp(x,y)) '\n']);
end
end
end
toc;
return;