假设我的输出是一个大数组,比如500x4。 我想将此数组转换为代码形式以创建相同的数组。 一个例子:
output_array = randn(2,3)
output_array =
-0.2408 -0.9390 1.1794
-0.9064 0.1178 -0.4643
我想获得:
input_array = [-0.2408 -0.9390 1.1794; -0.9064 0.1178 -0.4643]
对于低维度,手动工作很容易,但我可以获得任意矩阵的输入代码。
感谢。
答案 0 :(得分:1)
这是一种方式:
a = randi(2,3)
linespec = [repmat('%d ',1,size(a,2)) '; ']
spec = strrep(['[ ' repmat(linespec,1,size(a,1)) ' ]'],'; ','')
b = sprintf(spec,a(:) )
a =
2 2 1
1 1 1
1 2 2
linespec =
%d %d %d ;
spec =
[ %d %d %d ; %d %d %d ; %d %d %d ]
b =
[ 2 1 1 ; 2 1 2 ; 1 1 2 ]
请注意,' ... '
代码段中定义的空格数量很重要!
使用:
spec = ['b = ' strrep(['[ ' repmat(linespec,1,size(a,1)) ' ]'],'; ','') ]
得到:
b =
b = [ 1 2 2 ; 1 2 2 ; 1 2 1 ]
将所有内容包装到函数中可能会很有趣:
function [ out ] = Matrix2String( a )
varname = inputname(1);
linespec = [repmat('%d ',1,size(a,2)) '; '];
spec = [varname ' = ' strrep(['[ ' repmat(linespec,1,size(a,1)) ' ]'],'; ','') ];
out = sprintf(spec,a(:) );
end
这样的电话:
a = randi(2,3)
Matrix2String(a)
然后会返回:
ans =
a = [ 2 1 1 ; 2 1 2 ; 1 1 1 ]