Matlab 如何从一些简单的方程式中生成pcolor图形?

Matlab 如何从一些简单的方程式中生成pcolor图形?,matlab,plot,Matlab,Plot,我有以下功能,x,y代表位置,c代表深度或高度。我需要制作一个pcolor图形,其中包含x、y和c,但一个MATLAB错误阻止了我。代码如下: t= linspace(0,100,1001); x = t; y = cos(pi * t + pi); c = cos(pi * t); pcolor(x,y,c); shading flat; 错误消息 使用pcolor时出错(第53行)颜色数据输入必须是矩阵 新问题 如果我想得到一个像下面这样的pcolor图

我有以下功能,
x
y
代表位置,
c
代表深度或高度。我需要制作一个
pcolor
图形,其中包含
x
y
c
,但一个MATLAB错误阻止了我。代码如下:

t= linspace(0,100,1001);
x = t;   
y = cos(pi * t + pi);   
c = cos(pi * t);    
pcolor(x,y,c);    
shading flat;    
错误消息

使用pcolor时出错(第53行)颜色数据输入必须是矩阵

新问题

如果我想得到一个像下面这样的
pcolor
图,如何将
c
展开到必要的矩阵

两个变化:我转置了
t
,因为通常使用列向量多于行向量。其次,我曾经将向量
c
展开为一个完整的
t*t
矩阵,这样
pcolor
就可以绘制它了

图:

严格地说,它们不是散乱的点,而是线向量。我所做的就是将这一行
t
复制几次,使其成为一个完整的矩阵,每一列都完全相同,因此图中的变化仅在
y
方向上,而不是在
x
方向上

使用@Hoki的建议:

t= linspace(0,100,1001).';
x = t;   
y = cos(pi * t + pi);   
[T,Y] = meshgrid(t,y); C=cos(pi * T); pcolor(T,Y,C);
shading 'flat'
结果:

要得到一个圆:

x=linspace(-100,100,2001);
[X,Y] = meshgrid(x);
Z = X.^2+Y.^2;
pcolor(X,Y,Z)
shading 'interp'
由于
Z=x^2+y^2
是圆的一般公式,因此结果为圆:

x=linspace(-100,100,2001);
[X,Y] = meshgrid(x);
Z = X.^2+Y.^2;
pcolor(X,Y,Z)
shading 'interp'

错误相当简单:必须输入矩阵,而不是向量
c
必须是大小为
numel(x)*numel(y)
的矩阵。感谢您的回复。我知道这个原因,但我不知道如何更正我的matlab代码以从散乱点生成pcolor,也就是如何将c转换为必要的矩阵。你不能从散乱点生成
pcolor
pcolor
将矩阵作为输入。如果提供了
x
y
坐标,则它们应形成一个网格,由
meshgrid
(或
ndgrid
)创建。即使纠正了这一点,您提供的等式也不会产生像您的示例中那样的数字。方程式一定不一样。我不能从你的照片上看出你对
c
使用的公式。你必须提供这个等式,它取决于
x
y
,并将其绘制为
c
矩阵谢谢!但是pcolor太平了,有没有其他方法来扩展向量c?例如,如果我想在pcolor中看到一些圆,怎么办?您可以使用
meshgrid
从原始向量中获取基本网格。可以是
[T,Y]=meshgrid(T,Y);C=cos(pi*T);pcolor(T,Y,C)