我正在尝试从matlab脚本中将数据写入文本文件。我想要两个它给我的列,但我想要我的时间变量(t)后跟我的变量(x),这是我的幅度。它输出如下文件。
一切都很完美,但我不相信我的(t)变量首先跟随我的(x)变量。我正在尝试将此文件上传到ploy.ly以进行绘图,但是当我将第1列设置为我的x变量而将第2列设置为我的y变量时,它会绘制一个如下所示的椭圆。它假设绘制一个正弦信号。
我的代码如下:
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;
答案 0 :(得分: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]);
从RTL BUG SPOT(谢谢!):请确保在sample.txt
语句中将sinData.txt
更改为fprintf
,因为这是句柄的名称到你打开的打开文件。
查看代码,t
和x
是行向量,因此这应该(希望)有效。我自己没有尝试过,而且我在某个地方,我没有MATLAB可访问。给我一个评论,让我知道它是否有效。