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)代码>