【问题标题】:Three dimensional plot on matlabmatlab上的三维绘图
【发布时间】:2015-04-27 18:25:05
【问题描述】:

我正在尝试做一个类似于所附的图。

我正好有一个带有日期的 (224x1) 向量(x 轴)、一个带有到期日的 (10x1) 向量(y 轴)和一个带有值的 (224x10) 矩阵(z 轴)。

我尝试了 surf(X, Y, Z) 但出现错误(“数据尺寸必须一致”)。

我怎样才能把它结合起来制作一个像附件一样的情节?

谢谢,V!

编辑:第二个情节是我使用 Luis Mendo 的建议得到的情节:

【问题讨论】:

    标签: matlab 3d


    【解决方案1】:

    使用

    surf(Y,X,Z)
    

    来自documentation(强调添加):

    surf(x,y,Z)surf(x,y,Z,C),用两个向量参数替换 前两个矩阵参数,必须有length(x) = nand length(y) = m 其中[m,n] = size(Z)。在这种情况下,顶点 表面补丁是三元组(x(j),y(i),Z(i,j))。 注意x对应Z的列,y对应 行

    【讨论】:

    • 谢谢!那确实奏效了。但是情节似乎有点奇怪......我已经上传了我得到的情节。每个日期的顶部和底部都有一些奇怪的黑线......知道为什么吗?另外,如何将实际日期放在 X 轴上,而不是 matlab 中的 datenum?
    • 一个简单的问题,如何将日期字符串放在 X 轴上?
    • @volcomp 试试set(gca,'xticklabel',{'string 1', 'string 2', 'string 3' })
    【解决方案2】:

    [X,Y]=meshgrid(x,y);
    surf(X,Y,Z);
    

    您需要创建一个网格网格才能绘制冲浪。 X ,Y 和 Z 需要相同大小!

    【讨论】:

    • 好的。所以可能 surf 不是我想要使用的功能。如果您查看上图,您会发现 X 和 Y 有不同的长度(这意味着在上面的示例中,x 是几个日期,Y 有 6 个到期日)。
    • 在我的例子中 X 和 Y 应该有不同的长度。 X 应该是 MxN(这里发生了 N 次 M 重复)并且 Y 应该是 NxM(其中发生了 M 次原始大小 N 的重复)
    猜你喜欢
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多