matlab如何实现降维,matlab怎么把矩阵降维1. matlab如何对⼀个矩阵 求导⽽且不降维
gradient
计算数值梯度
函数F(x,y,。)在(x0,y0,。)的梯度就是函数在该点的导数,通常在数学上记作▽F(x0,y0,。)或gradF(x0,y0,。)。
梯度是⼀个向量, 它的⽅向是函数在⼀点变化率最快的⽅向,⽽它的模就是函数沿这个⽅向的变化率。
在MATLAB中利⽤gradient计算梯度,将得到若⼲向量,它们指出了F的值增⼤的⽅向。
语法格式:
FX = gradient(F)
其中F是⼀个向量。该格式返回F的⼀维数值梯度。FX即∂F/∂x,即沿着x轴(⽔平轴)⽅向的导数。
[FX,FY] = gradient(F)
其中F是⼀个矩阵。该调⽤返回⼆维数值梯度的x、y部分。FX对应∂F/∂x, FY对应于∂F/∂y。
[FX,FY,FZ,。] = gradient(F)
这⾥,F是⼀个含有N个⾃变量的多元函数。
[。] = gradient(F,h)
这⾥的h指定了沿着梯度的⽅向取点的间隔。
[。] = gradient(F,h1,h2,。)
以x,y⽅向分别为间隔0.2求取矩阵Z的数值梯度,dZ/dx和dZ/dy分别返回到DX,DY中。
2. Matlab ⼆维数组Z字形降维操作
假设 data 是8*8数据矩阵
order = [
0 1 5 6 14 15 27 28
2 4 7 1
3 16 26 29 42
3 8 12 17 25 30 41 43
9 11 18 24 31 40 44 53
10 19 23 32 39 45 52 54
matlab求导20 22 33 38 46 51 55 60
21 34 37 47 50 56 59 61
35 36 48 49 57 58 62 63
]
当然也可以把 order就建成⼀个向量, 这样下⾯就不⽤reshape它了
result = sortrows( [reshape(data, [], 1) reshape(order, [], 1)], 2);
结果取 result(:, 1) 是个列向量