0

matlab から生成された dll ファイルを C# コンソール アプリケーションに統合しました。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;
4

0 に答える 0