计算变量的梯度
[dINTRHOdx,dINTrhody,~] = gradient(INTrho, DELTAx, DELTAy, depth);
我收到错误
指数超出矩阵维度。
渐变错误(第67行)g(2:n-1,:) =(f(3:n,:)) - f(1:n-2,:))。/ (h(3:n) - h(1:n-2));
但是,输入具有连贯的维度:
size(INTrho)
size(DELTAx)
size(DELTAy)
size(depth)
ans =
1080 149 52
ans =
1080 1
ans =
149 1
ans =
52 1
如果我尝试以下
[dx,dy,~]=gradient(rand(5,5,3),1:5,1:5,1:3)
(具有相干维度的变量的梯度计算), 我没有错。
另请注意,我没有一个名为gradient的变量:
which gradient
/Applications/MATLAB_R2017a.app/toolbox/matlab/datafun/gradient.m
我错误的原因是什么?
编辑: 部分答案
如果我使尺寸完全相同
DELTAx=repmat(DELTAx, 1,numel(DELTAy),numel(depth));
DELTAy=repmat(DELTAy, size(DELTAx,1),1,numel(depth));
ddepth=repmat(depth, size(DELTAx,1),size(DELTAy,2),1);
然后gradient
正常工作
[dINTRHOdx,dINTrhody,~] = gradient(INTrho, DELTAx, DELTAy, ddepth);
但是,为什么[dx,dy,~]=gradient(rand(5,5,3),1:5,1:5,1:3)
有效?
答案 0 :(得分:1)
您的问题是您输入的顺序。 awk -v d1="$(date --date="-60 min" "+[%d/%m/%Y:%H:%M:%S")" -v d2="$(date "+[%d/%m/%Y:%H:%M:%S")" '$0 > d1 && $0 < d2' log.log
起作用的原因是因为前两个输入都是长度为5.更清楚的示例是看输入顺序的重要性如下。
[dx,dy,~]=gradient(rand(5,5,3),1:5,1:5,1:3)
如果您将原始输入的顺序更改为以下内容,则应该可以正常工作。
[dx,dy,~]=gradient(rand(5,6,3),1:6,1:5,1:3)