Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-04-27, 10:58   #1
winewy
初级会员
 
注册日期: 2009-04-27
年龄: 36
帖子: 9
声望力: 0
winewy 正向着好的方向发展
问题 小妹在此请教各位大侠一个问题!

我现在要用matlab画数组,数组元素由0 1组成,我用的是plot(x,y,'*',x,y)语句,但我想把y值为0的点去掉,即图上只保留x=1的点,但x轴长度不变,请问各位大侠该如何处理呢?
winewy 当前离线   回复时引用此帖
旧 2009-04-27, 18:30   #2
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: 小妹在此请教各位大侠一个问题!

x是什么数组?

我想把y值为0的点去掉,即图上只保留x=1的点.......此句何意?是否“图上只保留y=1的点”?

x轴长度不变......x的范围?
mathjiang 当前离线   回复时引用此帖
旧 2009-04-28, 12:42   #3
winewy
初级会员
 
注册日期: 2009-04-27
年龄: 36
帖子: 9
声望力: 0
winewy 正向着好的方向发展
默认 回复: 小妹在此请教各位大侠一个问题!

是的,应该是只保留y=1的点
很抱歉昨天没把问题说清楚,比如说,x=1:1:10;y=[0 0 1 1 1 0 0 1 0 0];我想在图上只保留y=1的点,x轴长度不变,请问各位高手应使用什么语句呢?
__________________
growing up can be so strange,but some things will never change.
winewy 当前离线   回复时引用此帖
旧 2009-04-28, 15:30   #4
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: 小妹在此请教各位大侠一个问题!

function yourplot(x,y)

% x,y 为维数相同向量.
n=length(x);
axis([min(x) max(x) min(y)+0.3 max(y)+0.3]) %隐藏纵坐标为0的点.
%axis equal
hold on
for i=1:n
if y(i)==0
plot(x(i),y(i),'w.') %不画出纵坐标为0的点的表示法.
else
plot(x(i),y(i),'r*','markersize',6)
end
end
hold off

此帖于 2009-04-28 15:37 被 mathjiang 编辑。
mathjiang 当前离线   回复时引用此帖
旧 2009-04-28, 15:31   #5
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: 小妹在此请教各位大侠一个问题!

上面绘图函数中,并不是真的没有画出纵坐标为0的点,而是以白色画出这些点,然后通过调整坐标系隐藏了纵坐标为0的点。

此帖于 2009-04-29 09:32 被 mathjiang 编辑。
mathjiang 当前离线   回复时引用此帖
旧 2009-04-29, 09:15   #6
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: 小妹在此请教各位大侠一个问题!

还可如下实现:
function yourplot(x,y)

% x,y 为维数相同向量,y为0-1向量.
idx=find(y==1);
plot(x(idx),y(idx),'r*','markersize',6)

上述函数简单明了,可快速实现楼主的想法(只是不知道是否实现了楼主的保持x长度的想法)。
mathjiang 当前离线   回复时引用此帖
旧 2009-04-29, 12:54   #7
winewy
初级会员
 
注册日期: 2009-04-27
年龄: 36
帖子: 9
声望力: 0
winewy 正向着好的方向发展
默认 回复: 小妹在此请教各位大侠一个问题!

谢谢大侠的指点,第二个函数idx=find(y==1);
plot(x(idx),y(idx),'r*','markersize',6)
虽然简单明了但改变了x轴长度(图上忽略了第一个y=1之前和最后一个y=1之后的点),第一个函数很好,我引用了哦,十分感谢^^
__________________
growing up can be so strange,but some things will never change.
winewy 当前离线   回复时引用此帖
旧 2009-04-29, 20:58   #8
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: 小妹在此请教各位大侠一个问题!

引用:
作者: winewy 查看帖子
谢谢大侠的指点,第二个函数idx=find(y==1);
plot(x(idx),y(idx),'r*','markersize',6)
虽然简单明了但改变了x轴长度(图上忽略了第一个y=1之前和最后一个y=1之后的点),第一个函数很好,我引用了哦,十分感谢^^
嗯,的确如此,所以我说是否实现了你说的保x长度的要求--没有实现这个要求哈。
mathjiang 当前离线   回复时引用此帖
旧 2009-05-01, 09:23   #9
frejdl
初级会员
 
注册日期: 2008-12-11
年龄: 40
帖子: 4
声望力: 0
frejdl 正向着好的方向发展
默认 回复: 小妹在此请教各位大侠一个问题!

x=1:10;y=[0 0 1 1 1 0 0 1 0 0];
ii=find(y==0);
y(ii)=NaN;
plot(x,y)
frejdl 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 22:22


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.