如何将通用MATLAB矩阵导出为文本文件,格式类似于C#数组

如何将通用MATLAB矩阵导出为文本文件,格式类似于C#数组,c#,matlab,export,C#,Matlab,Export,我在MATLAB中有一个矩阵,如下所示: [ 1 2 3 4; 5 6 7 8; 9 10 11 12] 我想将其导出为C#格式的文本文件: 我需要一个MATLAB函数,例如调用exportMatrix(),带有两个参数: MATLAB矩阵 必须导出此矩阵的tipo 如何使用此功能的两个示例如下: exportMatrix( myMatrix1, 'short'); exportMatrix( myMatrix2, 'float'); 我还需要,如果矩阵是多维的,函数应该正确地导出它。例

我在MATLAB中有一个矩阵,如下所示:

[ 1 2 3 4; 5 6 7 8; 9 10 11 12]
我想将其导出为C#格式的文本文件:

我需要一个MATLAB函数,例如调用
exportMatrix()
,带有两个参数:

  • MATLAB矩阵
  • 必须导出此矩阵的tipo
如何使用此功能的两个示例如下:

exportMatrix( myMatrix1, 'short');
exportMatrix( myMatrix2, 'float');
我还需要,如果矩阵是多维的,函数应该正确地导出它。例如,如果:

>> size(A)

ans =

        100        10           3
然后调用exportMatrix的结果(A,'double')应为:

double[, ,] A = {...};
这是一个有趣的问题:)这里是一个起点:

function exportMatrix(A)
% get dimensions 
dimensions  = size(A);
N_dim       = length(dimensions);

% print variable declaration to console
fprintf('double[')
for i = 1:N_dim-1
    fprintf(',')
end
% finish declaration and print rows of matrix
fprintf('] A= {%s}\n', exportRow(A, dimensions))

function str_out = exportRow(B, dims)
% recursively print matrix

% init output string
str_out = '';

% have we finished yet?
if length(dims) > 1
    % if not, then go to next layer
    for i=1:dims(1)
        % this test is just to make sure that we do not reshape a
        % one-dimensional array
        if length(dims) > 2
            % print next slice inside curly-braces
            str_out = sprintf('%s{ %s },', str_out, exportRow(reshape(B(i,:), dims(2:end)), dims(2:end)) );
        elseif length(dims) == 2
            % we are almost at the end, so do not use reshape, but stil
            % print in curly braces
            str_out = sprintf('%s{ %s },', str_out, exportRow(B(i,:), dims(2:end)) );
        end
    end
else
    % we have found one of the final layers, so print numbers
    str_out = sprintf('%f, ', B);
    % strip last space and comma
    str_out = str_out(1:end-2);
end
% strip final comma and return
str_out = sprintf('%s', str_out(1:end-1));
仅适用于二维阵列及以上。试试看

exportMatrix(rand(2,2,2))

如果要打印到文件中,需要修改fprintf语句…

您可以使用它正确格式化输出。这是一个很好的起点。您还可以使用另一个表示C中矩阵类型的输入来修改上述函数#
exportMatrix(rand(2,2,2))