0

我正在尝试从我的 matlab 脚本将数据写入文本文件。我想要它给我的两列,但我想要我的时间变量(t),然后是我的变量(x),这是我的幅度。它输出如下文件。

图片1

一切都很完美,但是我不相信我的 (t) 变量首先是我的 (x) 变量。我正在尝试将此文件上传到ploy.ly以进行绘制,但是当我将第 1 列设置为我的 x 变量并将第 2 列设置为我的 y 变量时,它会绘制一个如下所示的椭圆。假设绘制正弦信号。

图片2

我的代码如下:

f = 1E3;
T = 1/f;
tmin = 0;
tmax = 5*T;
dt = T/100;
t = tmin:dt:tmax;
x = sin(2*pi*f*t);
sinData.txt = fopen('sinData.txt','w');
fprintf(sample.txt,'%7.5f,%7.5f\r\n',x);
fclose(sinData.txt);
plot(t,x,'r');
grid on;
4

1 回答 1

0

MATLAB 以列主要格式写入文件。这意味着它将首先遍历一列中的每一行,然后再移动到下一列。如果您有一个M x 2值矩阵,其中第一列是t值向量,第二列是x值向量,请在写入文件之前尝试转置矩阵。这样,每列代表(t,x)您的一对值,并且 MATLAB 应该能够保留对文件的写入,以便每一都是唯一的对。

此外,在您的代码中,您只是将x值写入文件。这是有道理的,因为如果您逐行查看文本文件,它几乎模仿了正弦输出。它从 0 上升到 1,然后又回到 0。您的x向量是一个正弦输出,因此适合该模式。因此,您可能也想编写这些t值。为此,请修改fprintf代码中的语句,使其如下所示:

fprintf(sinData.txt,'%7.5f,%7.5f\r\n', [t;x]);

BUG SPOT FROM RTL(谢谢!):确保在语句中 更改sample.txt为,因为这是您打开的打开文件的句柄名称。sinData.txtfprintf

查看您的代码,t并且x是行向量,所以这应该(希望)有效。我自己没有尝试过,而且我在无法访问 MATLAB 的地方。给我留言,让我知道它是否有效。

于 2014-05-10T21:37:18.497 回答