我有一个1x24的矩阵 . 在每个单元格内是另一个单列的矩阵 . 但是,列长度从一个矩阵变为另一个矩阵 . 有没有办法平均每个矩阵的第一行,并输出到一个新的矩阵,其中第一个单元格是所有矩阵第一个单元格的平均值?然后第二个和第三个一直到最后?
到目前为止,这是我的脚本 . 你可以看到我创建了一个矩阵 . 现在我想平均它们(在我插入它们之后) .
close all
clear
clc
k = cell(1,24);
for k=1:24
data{k} = xlsread('C:\data.xlsx',['PKA', num2str(k)]);
end
for i=1:24
xfinal{i}=data{1,i}(end,1);
xi{i}=0:0.001:xfinal{i};
xi{i}=transpose(xi{i});
x{i}=data{1,i}(:,1);
y{i}=data{1,i}(:,4);
yi{i} = interp1(x{i},y{i},xi{i});
xf{i}=xi{i};
xf{i}=(1:10001);
yi{i} = interp1(x{i},y{i},xi{i});
yf{i}=yi{i};
yf{i}=(1:10001);
end
如果我点击yi变量,我会看到一行 . 在每个单元格中,还有另一个矩阵 . 第一个矩阵是10014x1,第二个矩阵是10084x1 . 我只关心前10,001个元素,尽管矩阵的长度不同 . 我只想从每个矩阵平均前10,000个元素 . 因此,行1从每个矩阵等平均,第2行,等等,都在10001x1的单个矩阵中
编辑:代码使用rayreng
close all
clear
clc
k = cell(1,24);
for k=1:24
data{k} = xlsread('C:data.xlsx',['PKA', num2str(k)]);
end
for i=1:24
xfinal{i}=data{1,i}(end,1);
xi{i}=0:0.001:xfinal{i};
xi{i}=transpose(xi{i});
x{i}=data{1,i}(:,1);
y{i}=data{1,i}(:,4);
yi{i} = interp1(x{i},y{i},xi{i});
end
Y = zeros(10001, numel(data));
for ii = 1 : numel(data)
Y(:, ii) = yi{ii}(1 : 10001);
end
Y2 = mean(Y, 2);
Y3 = std(Y2, [], 2); errorbar(0 : 0.1 : 10, Y2(1: 100 : 10001), Y3(1 : 100 : 10001));
grid on