【问题标题】:Getting the format correct when writing data to a text file from a matlab script从 matlab 脚本将数据写入文本文件时获取正确的格式
【发布时间】:2014-06-28 11:34:42
【问题描述】:

我正在尝试将数据从我的 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;

【问题讨论】:

    标签: matlab plotly


    【解决方案1】:

    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(谢谢!): 确保在 fprintf 语句中将 sample.txt 更改为 sinData.txt,因为这是您打开文件的句柄名称已经打开了。

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

    【讨论】:

    • 确认这确实有效,除了从原始代码 sample.txt 继承的拼写错误应该是 sinData.txt
    • @rayryeng 谢谢这确实检查了。我只是不知道如何添加另一个变量。当我需要包含方括号和分号 [t;x] 时,我一直只输入 t,x。
    • @ShaneYost:没问题。 [t;x] 所做的是将两个矩阵逐行连接在一起。 t 会先来,x 从上到下跟着它。 FWIW,如果您想连接两个矩阵按列,只需执行[t x][t,x]。 MATLAB 中的空格或逗号表示下一个元素将进入下一列,而分号表示下一个元素将进入下一行。顺便说一句:刚刚查看了您的个人资料。尊重你的手艺,祝你一切顺利!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多