-1

编辑 1 - 这个问题已经解决,这是由于 Floris 发现了一个错字。

我在 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 来说太长了,它会截断它,我丢失了很多我的数据。因此,当我将返回的数据(作为字符串返回)转换为数字时,它会给我一个空矩阵,那么此时 reshape 命令毫无意义。

这是它在 Matlab 中的读取方式:

 20.65866342... Output truncated.  Text exceeds maximum line length of 25,000 characters for Command Window display.

所以 20.65866342 是我开始丢失数据之前的最后一个值。我知道它说它对于命令窗口来说太大了,但变量仍然没有存储所有数据并且它丢失了。

有没有人有任何解决方案来避免这种截断?或者有人想为我建议一种替代方法来转换我的数据吗?

我正在使用 Matlab 2012b 和 Windows 7

谢谢你的时间。

4

1 回答 1

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);

如果我了解您的代码的逻辑。

于 2013-07-10T13:11:03.357 回答