如何在矩阵中分别将方程应用于多个列?

时间:2012-08-02 20:11:27

标签: matlab matrix max

我有4种不同长度的数据(按行),它们都有不同的列数。我需要对每个列应用一个方程,然后从每个列中提取最大值。

我想要使用的等式是:

averg = mean([interpolate(1:end-2),interpolate(3:end)],2); % this is just getting your average value.
real_num = interpolate(2:end-1);
streaking1 = (abs(real_num-averg)./averg)*100;

我的一个数据集的示例是5448行乘13列

修改

这是Ben A.解决方案的当前改编,它正在发挥作用。

A = interpolate;    
averg = (A(1:end-2,:) + A(3:end,:))/2;
center_A = A(2:end-1,:);
streaking = [];
for idx = 1:size(A,2)
    streaking(:,idx) = (abs(center_A(idx,:)-averg(idx,:))./averg(idx,:))*100;
end 

1 个答案:

答案 0 :(得分:1)

我不完全确定我完全遵循你在每一步中所做的事情,但这里有一个刺:

A = interpolate;    
averg = (A(1:end-2,:) + A(3:end,:))/2;
center_A = A(2:end-1,:);
streaking = [];
for idx = 1:size(A,2)
    streaking(:,idx) = (abs(center_A(idx,:)-averg(idx,:))./averg(idx,:))*100;
end 

Averg将成为每列的手段向量。我只是使用给定列中的值作为之前的real_num变量。我不清楚为什么你需要按照你的方式索引,因为没有任何东西有破坏索引规则的风险。

如果这有帮助,那太好了!如果没有让我知道,我会看看我是否可以稍微修改。