【问题标题】:How to extract columns of data from .txt files MATLAB如何从 .t​​xt 文件中提取数据列 MATLAB
【发布时间】:2016-10-14 21:38:35
【问题描述】:

我在 .txt 文件中有一些数据。用逗号分隔。

例如:

1.4,2,3,4,5
2,3,4.2,5,6
24,5,2,33.4,62

如果您想要列的平均值,例如第一列(1.4、2 和 24),该怎么办?还是第二列(2,3 和 5)?

我认为将列放在一个数组中并使用内置的 mean 函数会起作用,但到目前为止,我只能提取行,而不是列


我想我会编辑这个,而不是创建另一个线程。我正在努力获取众所周知的 iris 数据集每一列的平均值。 我截取了一小部分数据:

5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa

delimiterln= ',';
data = importdata('iris.txt', delimiterln);


meanCol1 = mean(data(:,1))
meanCol2 = mean(data(:,2))
meanCol3 = mean(data(:,3))
meanCol4 = mean(data(:,4))

'cell' 类型的输入参数的未定义函数 'sum'。

均值误差(第 115 行) y = sum(x, dim, flag)/size(x,dim);

irisData 中的错误(第 6 行) meanCol1 = mean(data(:,1))

看起来处理数据类型有错误...对此有什么想法吗?我试着去掉最后一列,它是字符串。它似乎可以正常工作。所以我认为这是因为字符串。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    使用逗号分隔的文件读取功能:

    M = csvread(filename);
    

    现在你有了矩阵 M:

    col1Mean=mean(M(:,1));
    

    【讨论】:

    • 在 Matlab 中,尽早且经常地进入“矢量化”思维模式是值得的:mean(M, 1) 让您一次获得所有列的平均值。
    • csvread 是否仅适用于数字?如果有额外的字符串列怎么办?有没有办法只排除那一列?
    • 好的,我想我知道如何做行的范围,所以它会像
    • 其实我发现:M = csvread(filename,R1,C1) and M = csvread(filename,R1,C1,[R1 C1 R2 C2]) 用于范围有界计算
    猜你喜欢
    • 1970-01-01
    • 2014-03-17
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2019-09-15
    相关资源
    最近更新 更多