【问题标题】:MATLAB - How to import and plot data from a .mat file to x and y variables?MATLAB - 如何将 .mat 文件中的数据导入和绘制到 x 和 y 变量?
【发布时间】:2010-05-14 20:13:40
【问题描述】:

我有一个问题,我以为我知道如何解决,但显然我失败了..

我创建了一个.mat 文件。它有两列和 25 行数字。我想做一个循环来获取第一列中的每个值并将其放入 X 值中,并将第二列放入 Y 值中。然后我需要在图表上绘制点。

我知道如何进行循环和绘图.. 但我未能提取数据并将它们放入 X 和 Y 值中。

这是我的试用代码:

        load figureinfo.mat
        for K=1:25
            x=X(:,K) ~~ I remember that the code looks something like that to extract ..
            y=Y(:,K)
            plot(x,y,'o')
            hold on
        end

如何获取数据并将其放入 X 和 Y 中?

另外,(:,b) 中的“ROWS”在哪里? b=Columns,但我应该把这些行放在哪里?

【问题讨论】:

    标签: matlab loops


    【解决方案1】:

    尝试以下方法:

    load figureinfo.mat; %# assume this contains a matrix called figureinfo
    X = figureinfo(:,1); %# numbers from all rows, column 1, into X
    Y = figureinfo(:,2); %# numbers from all rows, column 2, into Y
    plot(x,y,'o');
    

    或者更简单地说,

    load figureinfo.mat;
    plot(figureinfo(:,1), figureinfo(:,2), 'o');
    

    如果您不知道.mat 文件中的矩阵名称,我建议:

    clear %# clear all variables from workspace
    load figureinfo.mat;
    whos
    

    这将显示您刚刚加载的任何内容的名称、大小和数据类型。

    如果你真的想循环提取数据,你有两种选择:

    load figureinfo.mat; %# assume this contains a matrix called figureinfo
    X = [];
    Y = [];
    for ctr = 1:length(figureinfo)
        X = [X figureinfo(ctr,1)];
        Y = [Y figureinfo(ctr,2)];
    end
    

    或(更快,因为它不会一直重新分配 XY

    load figureinfo.mat; %# assume this contains a matrix called figureinfo
    X = zeros(length(figureinfo),1);
    Y = zeros(length(figureinfo),1);
    for ctr = 1:length(figureinfo)
        X(ctr) = figureinfo(ctr,1);
        Y(ctr) = figureinfo(ctr,2);
    end
    

    【讨论】:

    • 非常感谢..我收到??? Undefined variable figureinfo. ..这是因为我可能创建了不正确的mat文件吗?我只有两列,而且它们有数字.. 看起来有效吧?
    • 我假设您的.mat 文件中的变量名为figureinfo。这对我来说是一个糟糕的假设。尝试使用clear; load figureinfo.mat; whos 来查找矩阵的真实名称。
    • 我编辑添加了循环信息。要记住的规则是索引是row,column: 运算符为您拉出整行/列,这样您就不必自己编写循环。在您的初始示例中,x = X(:,K) 表示“从 X 中提取所有行第 K 列中的数字并将它们放入 x 中”。
    • 其实,你能告诉我figureinfo.mat里有什么吗?我以为它是一个矩阵,但再次查看您的问题时,我意识到它实际上有两个矩阵 X 和 Y。对吗,它们的大小是多少?
    • 酷,很高兴它正在工作。您可以尝试drawnow() 而不是pause 来更新图表。
    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多