如何在MATLAB中按列将两个矩阵合并为逗号分隔的字符串数组
解决MATLAB中矩阵对应元素拼接为字符串数组的问题
嘿,我来帮你搞定这个需求!你想要把两个行向量A和B的对应元素拼接成"x,y"格式的字符串数组C,对吧?先给你几个实用的方案:
方法一:用compose函数(最简洁高效)
MATLAB的compose函数专门用来批量生成格式化字符串,完全不需要写循环,一行代码就能搞定:
A = [1 3 4 3]; B = [2 1 4 1]; C = compose("%d,%d", A, B);
运行后C就是你想要的:["1,2" "3,1" "4,4" "3,1"]。如果你的元素是浮点数,只需要把格式字符串改成"%.2f,%.2f"就行,和你原来用的%0.2f效果一致。
方法二:改进循环写法(适合理解过程)
你原来的代码用了嵌套循环加fprintf,但fprintf只是把内容打印到命令行,没有存储到数组里,而且其实不需要两层循环(因为A和B都是1行的向量,只需要遍历每一列)。可以这样修改:
A = [1 3 4 3]; B = [2 1 4 1]; C = strings(size(A)); % 先初始化一个和A同尺寸的空字符串数组 for i = 1:length(A) C(i) = sprintf("%d,%d", A(i), B(i)); end
这里先用strings函数初始化字符串数组,然后每次循环用sprintf生成单个拼接字符串,赋值给C的对应位置,这样就能得到目标数组了。
为啥你的原代码没达到效果?
你原来的嵌套循环会遍历所有i和j(相当于遍历4x4=16个元素),这其实是多余的,因为你只需要对应位置的元素配对;而且fprintf只是输出内容,不会把结果保存到变量里,所以没法得到字符串数组C。
内容的提问来源于stack exchange,提问作者Vendetta
相关产品推荐
相关产品推荐

