`2.4 2.34 2.21 1.90 1.4 0.83 0
2.34 2.42 2.16 1.79 1.3 0.7 0
2.21 2.16 1.99 1.64 1.16 0.51 0
1.90 1.79 1.64 1.30 0.75 0 0
1.4 1.34 1.16 0.75 0 0 0
0.83 0.75 0.51 0 0 0 0
0 0 0 0 0 0 0
`
这就是我的矩阵在某个时间点的样子,我喜欢计算表面的平均斜率或坡度(陡度的指标)。
似乎MatLab应该有这种东西的内置函数,但我可以找到一个。我也尝试过我写的代码,但这不准确。 最好, 阿比德
答案 0 :(得分:2)
渐变是矢量的,因此您可以分别处理这两个尺寸。 计算梯度包括计算函数的每个参数的一阶导数。在离散域中,可以通过采用有限差分来完成:http://en.wikipedia.org/wiki/Finite_difference
如果你想要它精确并计算每个点的渐变,你不能只采取向前或向后的差异,因为在边缘,你并不总是有一个向前(或向后)点。
但我认为如果您只想要渐变的平均值,则无需担心边缘,您可以使用diff计算原始点之间的中心点的有限差分:
dx = diff(data,1,1);
dy = diff(data,1,2);
mean_gradient = [mean(dx(:)) mean(dy(:))]
假设cours参数的间距相等,否则你必须按步长划分dx和dy。
对于您提供的数据,结果如下:
mean_gradient =
-0.26381 -0.26381
与您所绘制的图表相匹配,表明该函数在参数中单调递减且对称。
答案 1 :(得分:0)
执行此操作的一种方法是执行多元线性回归,例如使用regress。
二维回归是最适合的平面,您可以从中计算斜率值。该链接有一个很好的代码示例和结果图。