打印和连接矩阵

Printing and concatenating a matrix

所以我有一个 16x5 矩阵,每个条目中都有数字。

我想这样打印每一行:

1&244&1&395&\$246,700\

这样我就可以在不伤手腕的情况下复制和粘贴到乳胶中。我尝试了很多东西,但没有任何效果。 dlmwrite 只允许我使用 1 个分隔符。最后一个条目中不需要逗号,如果需要我会手动这样做,但我至少会喜欢其余的。

对于像这样更复杂的打印方案,我总是选择 fprintf。 如果您的矩阵是 A,其中 FileID 来自 fopen,您可以通过

获得输出
fprintf(FileID,'%d & %d & %d & %d & \$%d,%d \\ \n',A);

有关该格式字符串的更多详细信息可以是 found here


由于最后一个数字应该是逗号分隔值,因此您需要将其转换为字符串。 这是该问题的解决方案。 首先,将最后一列转换成字符串的列数组,并使用我写的函数(不确定是否已经存在):

Astr = num2strcomma(A(:,5));

那个逗号函数是

function vstr = num2strcomma(v,varargin)

    nDigits = floor(log10(v)) ; 
    nCommas = floor(nDigits/3);

    vstr = cellstr(num2str(v,varargin{:}));
    for k = 1:length(vstr)
        nstr = vstr{k};
        ind  = 1:(length(nstr)+nCommas(k));
        work = repmat(' ',1,ind(end));
        start = find(nstr == '.',1);
        if isempty(start)
            start = ind(end);
        end
        indComma  = ind(start-3:-4:1);
        indNumber = setdiff(ind,indComma);
        work(indComma)  = ',';
        work(indNumber) = nstr;
        vstr{k} = work;
    end

end

然后遍历数组

for k = 1:size(A,1)
  fprintf(FileID,'%d & %d & %d & %d & \$%s \\ \n',A(k,1:4),Astr{k});
end