You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中z维度不同的x,y,z数据曲面绘制问题

MATLAB中维度不匹配的x/y/z数据能否用surf()或plot3()绘制?

给定数据代码

M = 1000; % [seconds]
D = 50; % number of masses
t = [0:dt:M];
y = randn(length(t),1); % [unitless] amplitude
z = [1:1:2*D]; % [unitless] number of eigenfrequencies
data = [t,y,z];

问题描述

希望绘制曲面图,x轴为时间t,y轴为振幅y,z轴为特征频率序号z。其中x和y的维度与t一致,但z的维度为1×100(即长度为2*D),与x/y维度不匹配,询问能否在MATLAB中使用surf()或plot3()绘制这类数据。

编辑说明:此问题表述欠佳,实际这类维度不同的x,y,z数据根本无法绘制。

回答

不能直接用surf()或plot3()绘制这类维度不匹配的数据,原因如下:

  • surf()要求输入的X、Y、Z必须是同维度的矩阵(若X/Y为向量,MATLAB会自动扩展为网格矩阵,但Z必须对应匹配的矩阵)。你的t和y是长度为N的向量,z是长度为100的向量,三者维度完全不兼容,无法构成曲面所需的网格数据。
  • plot3()用于绘制3D曲线或散点时,要求三个变量为同长度的向量(单条曲线)或多组同长度向量(多条曲线),你的z与t/y长度不匹配,无法一一对应每个(t,y)点到z值。

如果要可视化这类数据,需先根据数据逻辑构造匹配维度的网格。比如,若想展示每个特征频率序号z下时间t和振幅y的分布,可按以下方式处理:

% 构造匹配维度的网格数据
[T, Z] = meshgrid(t, z);
Y = repmat(y', length(z), 1); % 将y扩展为与T、Z同维度的矩阵

% 绘制曲面图
surf(T, Y, Z);
xlabel('时间 t (秒)');
ylabel('振幅 y');
zlabel('特征频率序号 z');

处理后,T、Y、Z均为100×N的矩阵,满足surf()的输入要求。

内容的提问来源于stack exchange,提问作者Jonathan Frutschy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:22:53