代码之家  ›  专栏  ›  技术社区  ›  NLed

matlab-如何将.mat文件中的数据导入并绘制到x和y变量中?

  •  1
  • NLed  · 技术社区  · 14 年前

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

    我得到了一个 .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) ? b=Columns ,但是我应该把这些行放在哪里呢?

    1 回复  |  直到 12 年前
        1
  •  4
  •   mtrw    14 年前

    尝试以下操作:

    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
    

    或者(更快,因为它不会继续重新分配 X Y )

    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