所以我有一个16x5矩阵,每个条目都有数字。
我想打印每一行:
1安培; 244&安培1安培; 395&安培; \ $二四六七○○\
这样我就可以复制并粘贴到乳胶中而不会伤到我的手腕。我尝试了很多东西,但没有任何作用。 dlmwrite只允许我使用1个分隔符。在最后一个条目中不需要是逗号,如果需要,我会手动执行,但我至少会喜欢其余的。
答案 0 :(得分:2)
对于像这样的更复杂的打印方案,我总是选择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