Matlab 从单个矩阵中抖动

Matlab 从单个矩阵中抖动,matlab,matrix,plot,Matlab,Matrix,Plot,我有一个矩阵(在Matlab中),我需要用箭图来绘制,但我不知道如何将其转化为“箭图可绘制形式”。有什么命令可以改变它吗?我在MathWorks主页上看到了一些使用peaks函数的示例,但我无法让它工作 我的矩阵非常大,有很多NaN,所以我创建了一个更小的版本 Temperature = [ 1 2 2 2 3 4 6 7 ; 1 2 3 4 4 5 6 7 ; 2 3 4 NaN NaN 6 8 9 ;

我有一个矩阵(在Matlab中),我需要用箭图来绘制,但我不知道如何将其转化为“箭图可绘制形式”。有什么命令可以改变它吗?我在MathWorks主页上看到了一些使用peaks函数的示例,但我无法让它工作

我的矩阵非常大,有很多NaN,所以我创建了一个更小的版本

Temperature = [ 1 2 2 2   3   4 6 7 ;
                1 2 3 4   4   5 6 7 ;
                2 3 4 NaN NaN 6 8 9 ;
                3 4 5 NaN NaN 7 8 9 ;
                4 4 6 6   7   8 10 11;
                4 5 7 7   8   9 11 12];
contour(Temperature)

%quiver(Temperature)

在注释中,您可以找到我使用的文档中的示例代码。除了知道尺寸是按[Y,X,Z]顺序排列以获得匹配的网格外,主要是复制和粘贴

% figure
figure
% [X,Y] = meshgrid(-2:.2:2);
Temperature = [ 1 2 2 2   3   4 6 7 ;
                1 2 3 4   4   5 6 7 ;
                2 3 4 NaN NaN 6 8 9 ;
                3 4 5 NaN NaN 7 8 9 ;
                4 4 6 6   7   8 10 11;
                4 5 7 7   8   9 11 12];
[X,Y] = meshgrid(1:size(Temperature,2),1:size(Temperature,1));
% Z = X.*exp(-X.^2 - Y.^2);
Z=Temperature;
% [DX,DY] = gradient(Z,.2,.2);
[DX,DY] = gradient(Z,1,1);
% contour(X,Y,Z)
contour(X,Y,Z)
% hold on
hold on
% quiver(X,Y,DX,DY)
quiverscaling=3;
quiver(X,Y,DX,DY,quiverscaling)
% colormap hsv
colormap hsv
% hold off
hold off

谢谢太棒了。但还有一件事我想改变。由于我的矩阵是1000x1000,箭袋非常小。你知道如何让它们变小变大吗?我最后的评论是错误的,似乎箭袋正在规范化箭头长度。我不知道有更大的箭头的解决方案。谢谢。。。我试过了。看起来DX和DY只是相对大小。如果我把它们都乘以100,如果我把它们都乘以10000,情节看起来是一样的。但如果我认为其中一个更大,它就会向那个方向延伸。@bjartmar:我把matlab的箭袋和另一个箭袋实现混淆了。现在,答案包括按3的比例缩放。