编辑1 - 这个问题已经解决,这是由于弗洛伊斯发现错误导致的错字。
我在Matlab中有一个单行矩阵,它正在截断并导致我丢失数据。
我的代码是:
[status,Vf_rpm_string] = system (fragment_velocity_string);
Vf_rpm_shape=regexprep(Vf_rpm_string,'\n',' ');
Vf_rpm_vector=str2num(Vf_rpm_string);
Vf_rpm= reshape(Vf_rpm_vector,[],1);
代码执行系统命令并存储结果,结果是数字矩阵,有时矩阵中的最后一行比前一行少。 Matlab不喜欢这个,因为它不知道如何处理最后一行中的空几列。所以我必须从结果(\n)
中删除新的行字符,并用空格替换它。
这一直正常工作,直到系统命令的结果太大,因此当我删除新的行字符(\n)
并将其替换为创建一行矩阵的空格时,对于Matlab而言它太长了截断它,我丢失了很多我的数据。因此,当我将返回的数据(以字符串形式返回)转换为数字时,它会给我一个空矩阵,那么此时重新整形命令是没有意义的。
这是它在Matlab中的读取方式:
20.65866342... Output truncated. Text exceeds maximum line length of 25,000 characters for Command Window display.
所以20.65866342是我开始松散数据之前的最后一个值。我知道它说它对于命令窗口来说太大了但是变量仍然没有存储所有数据并且它丢失了。
有没有人有任何解决方案来避免这种截断? 或者有人想为我建议一种替代方法来转换我的数据吗?
我正在使用Matlab 2012b和Windows 7
感谢您的时间。
答案 0 :(得分:1)
问题是您是否剥离换行符,但剥离的字符串不是您要解析的字符串?
[status,Vf_rpm_string] = system (fragment_velocity_string);
Vf_rpm_shape=regexprep(Vf_rpm_string,'\n',' ');
Vf_rpm_vector=str2num(Vf_rpm_string);
Vf_rpm= reshape(Vf_rpm_vector,[],1);
第三行代码应为
Vf_rpm_vector=str2num(Vf_rpm_shape);
如果我理解你的代码的逻辑。