向量数组矩阵的值转成逗号分隔字符串的工具,在数据日志场景下挺实用。vec2str.m
的做法就是把各种大小的数值,比如向量、数组甚至复数,全都压成一行字符串。你要是经常写日志或导出参数,这玩意儿能省不少事。
MATLAB 的字符串转换还是挺灵活的,核心用到几个老朋友:num2str
、strjoin
还有sprintf
。比如说你有个[1 2 3]
,用sprintf('%d,', vec)
能直接搞成'1,2,3,'
,再一下尾巴就行。
要更优雅点的做法?可以试试:先arrayfun
一遍转成字符串单元格,strjoin
拼起来,整洁还好控。像这样:
vec = [1.23, 4.56, 7.89];
str = strjoin(arrayfun(@num2str, vec, 'UniformOutput', false), ',');
这种做法对不同类型数据也挺兼容的,整数、浮点、甚至复数都能顺利过关。如果你写过vec2str.m
这种函数,就知道数据格式统一有多关键,尤其是写文件或做数据交互的时候。
顺带说一句,如果你是日志狂魔,想记下图像或者机器学习中每一步的中间值,那这个方法蛮适合的。简单、直观、效率也不差。
如果你还想延伸下去,不妨看看mat2str2,对多维数组支持更强;还有struct2str,结构体也能转字符串。
,这种压缩式字符串拼接方式,对 MATLAB 日志场景友好。你要是还在手动fprintf
一个个值?那得赶紧换个思路了。