我有一组存储在文本文件中的双矩阵。我通过垂直连接一组这些双矩阵文本文件来创建另一个文件。问题是如果在matlab中读取的连接文件现在是复数double类型的事实。我希望这个矩阵的类型为double,就像母文件一样。
串联是由一个非常愚蠢的代码完成的。在循环中,我只是在读取文件后进行垂直连接
//outside the loop
vector=dlmread(['fv/test_feature_vectors/' new_name '.txt']);
//loop begin
vector2=dlmread(['fv/test_feature_vectors/' new_name2 ]);
vector=vertcat(vector,vector2);
//loop end
dlmwrite(['fv/train_feature_vectors/fold' int2str(i-2) '.txt'], vector);
如果我对vector变量执行whos命令,我有:
whos vector
Name Size Bytes Class Attributes
vector 10577x705 119308560 double complex
如果我在最后一个vector2变量中做同样的事情,我有:
Name Size Bytes Class Attributes
vector2 22x705 124080 double
为什么会这样?为什么verticaly连接矩阵是复数型的?我的一些文本文件具有复杂的双值,我没有'注意到(我有数百个文件)?怎么摆脱这个?
答案 0 :(得分:1)
如果您写入文件'fv/test_feature_vectors/' new_name/2 '.txt'
的数据很复杂,那么在文本文件中它将被写为real + i imaginary。然后它也将被视为复杂的双重。
如果您知道它是真实的,您可以安全地忽略real
的虚部。
问题是更早。写入文件的数据不应该很复杂,因此之前可能存在一个小错误。