| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-04-27 
				
				年龄: 36 
				
					帖子: 9
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			我现在要用matlab画数组,数组元素由0 1组成,我用的是plot(x,y,'*',x,y)语句,但我想把y值为0的点去掉,即图上只保留x=1的点,但x轴长度不变,请问各位大侠该如何处理呢?
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			x是什么数组? 
		
		
		
		
		
		
		
	我想把y值为0的点去掉,即图上只保留x=1的点.......此句何意?是否“图上只保留y=1的点”? x轴长度不变......x的范围?  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-04-27 
				
				年龄: 36 
				
					帖子: 9
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			是的,应该是只保留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.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#4 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			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 编辑。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			上面绘图函数中,并不是真的没有画出纵坐标为0的点,而是以白色画出这些点,然后通过调整坐标系隐藏了纵坐标为0的点。
		 
		
		
		
		
		
		
		
		
			此帖于 2009-04-29 09:32 被 mathjiang 编辑。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#6 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			还可如下实现: 
		
		
		
		
		
		
		
	function yourplot(x,y) % x,y 为维数相同向量,y为0-1向量. idx=find(y==1); plot(x(idx),y(idx),'r*','markersize',6) 上述函数简单明了,可快速实现楼主的想法(只是不知道是否实现了楼主的保持x长度的想法)。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#7 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-04-27 
				
				年龄: 36 
				
					帖子: 9
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			谢谢大侠的指点,第二个函数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.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#8 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#9 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-12-11 
				
				年龄: 41 
				
					帖子: 4
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			x=1:10;y=[0 0 1 1 1 0 0 1 0 0]; 
		
		
		
		
		
		
		
	ii=find(y==0); y(ii)=NaN; plot(x,y)  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |