【问题标题】:Reading a text file in Matlab and calculating average of values在 Matlab 中读取文本文件并计算值的平均值
【发布时间】:2014-08-19 08:15:34
【问题描述】:

我创建了一个包含整数值的文本文件,如下所示:

1
2
3
4
5
56
10
.. and so on

我们的想法是找到这些数字的平均值。我在下面做了,但由于某种原因我得到了多个输出:

fid = fopen('random.txt', 'r');

data = fscanf(fid, '%i',1 );

fclose(fid);

averageValues= 'Average ' + (sum(data)/length(data))

【问题讨论】:

    标签: arrays matlab sum average


    【解决方案1】:

    fscanf 的调用将只读取文件的第一行。您应该将它放在一个循环中以实际读取每一行,或者简单地使用以下之一

    data = cell2mat(textscan(fid, '%d'));
    data = dlmread('random.txt')
    

    你得到的错误也在最后一行。在 Matlab 中,您不能以这种方式将双精度数转换为字符串。正确的代码是

    avg = mean(data);
    disp(['Average = ' num2str(avg)]);
    

    【讨论】:

      【解决方案2】:

      一行代码即可读取所有数据:

      data=textread('d:\1.txt','%d');
      datamean=mean(data)
      

      【讨论】:

        【解决方案3】:
         data = textread('random.txt',%i);
         mean_data = mean(data);
        

        %i 被使用是因为你有整数值。如果您有 double 值,请将其更改为 %d。

        【讨论】:

          【解决方案4】:

          拒绝所有答案。如果你的 .txt 文件只包含数字,那么就这样做

          >> load file.txt  
          >> mean(ans)
          

          例子:

          >> system('cat test.txt')
          1
          4
          4
          6
          ans =
          
               0
          
          >> load test.txt
          >> mean(test)
          
          ans =
          
                                3.75
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-01-24
            • 1970-01-01
            • 1970-01-01
            • 2020-07-11
            • 1970-01-01
            • 2016-06-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多