0

我进行了很多搜索以找到解决方案,但我认为没有什么对我真正有用。

我有n包含两列的数据文件(使用导入uigetfile)。为了提取数据,我使用for loop这样的:

for i=1:n
    data{i}=load(filename{i});
    x{i}=data{i}(:,1);
    y{i}=data{i}(:,2);  
end

现在,我想获得所有(比方说)x 值的每一行的平均值。例如:

x{1} = [1,4,7,8]

x{2} = [1,2,6,9]

然后我想要类似的东西

x_mean = [1,3,6.5,8.5]

我试过(k行数在哪里)

for i=1:n
        data{i}=load(filename{i});
        x{i}=data{i}(:,1);
        y{i}=data{i}(:,2);  
    j=1:k
        x_mean=sum(x{i}(j))/n
end

但是我不能在 for 循环中使用多个计数器(据我所知)。此外,我不使用mean,因为我不知道在这种情况下如何使用它。

如果有人可以帮助我,那就太好了!

4

1 回答 1

3

您可以将单元格中每个数值数组的内容捕获x到一个新的数值数组中x_num,如下所示:

x_num = [x{:}]

然后计算平均值就像

mean_x = mean( [x{:}] )

对于您的示例,这为您提供了 中所有数组中所有数字的平均值,因此这将是一个标量。x

如果您想计算所有行的平均值(如您的示例所示),则必须垂直连接数组,您可以使用以下方法cat

mean_x_columnwise = mean( cat(1,x{:}) )

如果您想对所有列取平均值(按行平均值),您只需要告诉mean您正在查看不同的维度:

mean_x_rowwise = mean( cat(1,x{:}), 2)
于 2013-07-09T09:44:03.537 回答