在Matlab中的Array中的绝对值求和

时间:2013-12-03 02:03:15

标签: arrays matlab sum absolute

我的数组在第一行包含一个字符串

如何将数组从第2行加到第N / 1442行(如我的例子中),忽略列中存在的负号?

例如,我的名为data2的数组的代码是:

S = sum(data2(2,15):data2(1442,15));

将第15行中第2行到第1442行的所有元素相加。 这不起作用,但它也没有任何东西可以处理其检查

的任何行的绝对值

数据来自.csv:enter image description here

2 个答案:

答案 0 :(得分:2)

你应该这样做:

sum(abs(data(2:1442,15)));

abs函数将找到数组中每个值的绝对值(即忽略负号)。 data(2:1442,15)将按照您的意愿获取第15列的2-1442行。

编辑:显然data是一个单元格数组,所以你可以这样做,我想:

sum(abs([data{2:1442,15}]));

答案 1 :(得分:1)

好的,所以看起来你有一个恒定的列,所以

data2(2,15) = -0.02

并进一步向下

data2(1442,15) = -0.02 %(I would assume)

所以当你形成:

data2(2,15):data2(1442,15)

这对于尝试创建一个数组而言非常重要,因为:

-0.02:-0.02

ans =

   -0.0200

当然给出了:

>> sum(-0.02:-0.02)

ans =

   -0.0200

你想要的更像是:

sum(data2(2:1442,15))

这样,索引:2:1442,为你形成所有行引用的向量。

忽略负值:

your answer = sum(abs(data2(2:1442,15)))

编辑:对于一个有效的单元格数组:

sum(abs(cell2mat(data2(2:1442,15))))