向量数组矩阵的值转成逗号分隔字符串的工具,在数据日志场景下挺实用。vec2str.m的做法就是把各种大小的数值,比如向量、数组甚至复数,全都压成一行字符串。你要是经常写日志或导出参数,这玩意儿能省不少事。

MATLAB 的字符串转换还是挺灵活的,核心用到几个老朋友:num2strstrjoin还有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一个个值?那得赶紧换个思路了。