matlab 一维矩阵 绘制 二维平面图

有两个一维矩阵,如x=linspace(0,4*pi,100),y=sin(x);可以以x为横坐标,y为纵坐标画一维曲线,怎样根据这两个一维矩阵画二维彩色平面图,以x为坐... 有两个一维矩阵,如x=linspace(0,4*pi,100), y=sin(x); 可以以x为横坐标,y为纵坐标画一维曲线,怎样根据这两个一维矩阵画二维彩色平面图,以x为坐标,y为函数值,如下图所示 展开
 我来答
dukinkin
推荐于2016-05-10 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:888万
展开全部
x=linspace(0,4*pi,100);
y=sin(x);

n=floor(length(x).*sqrt(2)/2);
v=linspace(-1,1,2*n-1)*x(n);
[xx yy]=meshgrid(v);
zz=interp1(x,y,sqrt(xx(:).^2+yy(:).^2));
zz=reshape(zz,size(xx));
imagesc(v,v,zz);
axis image;
colorbar;


追问
非常感谢,但能否在每行加上注释,不太明白为何要这么做n=floor(length(x).*sqrt(2)/2);% 为何乘以sqrt(2)/2
v=linspace(-1,1,2*n-1)*x(n);% 完全看不懂
追答
因为画成方形的图片的时候,离中间最远的就是4个角
根据原来的x,y数据,全部都用上了,最多画到角点
那么方形的边框位置最多是原来最大范围的sqrt(2)/2

算法本身是通过插值计算图像每点的值,所以分辨率是可以随意设置的
也就是最后图像的采样疏密是可以随意控制的
但就你原来已经有的x,最好还是保持和原来x一致的采样间隔

所以用length(x)求得原来图像x的点数
然后乘以sqrt(2)/2再取整,就的到最后图像边缘到中心的采样点数n
原来x是从0开始,x(1)=0,而x(2),x(3),...依次递增,到x(100)等于4*pi
那么图像边缘x对应的值就是x(n)
现在整个图像从左到右,从上到下的范围都是 -x(n) ~ x(n)
而算上中间0点,这期间应该有2n-1个点
所以v=linspace(-1,1,2*n-1)*x(n);得到了就是

图像从左到右,从下到上的横坐标和纵坐标范围

用meshgrid将这个范围扩成二维矩阵xx,yy
然后利用sqrt(xx(:).^2+yy(:).^2)计算出二维网格中每点到中心的距离
利用原来x,y数据,和这个距离插值计算出网格每点的值
最后用imagsc将网格画成图像
matlab爱好者
2020-12-23 · matlab编程与科研资料分享,欢迎关注!
matlab爱好者
采纳数:16 获赞数:28

向TA提问 私信TA
展开全部

本视频展示如何用matlab绘制散圆状态图,可用于相关科研数据绘图!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天空与飞鸟
2014-12-06 · TA获得超过1068个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:137万
展开全部
二维彩色平面图? 曲线y=sinx就是二维的
x=linspace(0,4*pi,100), y=sin(x); plot(x,y)
追问
大哥,这还是一维曲线图,不是平面图。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式