2017-02-16 6 views
1

일부 값이 -1 인 행렬이있어서 오류가 있음을 나타냅니다. 일반적으로 내 그래프에 이러한 값을 표시하지 않으려면 ylim([0 100])을 사용하고, 선 그래프를 사용하면 연결은 여전히 ​​지점으로 떨어집니다. 나는 산란 음모가 아닌 선으로 구성된 차트를 원합니다. 선을 그릴 때 음수 값을 무시하고 MATLAB에서 플롯 기능을 사용할 때만 양수 값을 연결하는 간단한 방법이 있습니까?matlab을 사용하여 선 그림을 그릴 때 음수 값을 무시하는 방법은 무엇입니까?

비슷하게 동작하는 작은 예제 프로그램을 작성했지만 사용하는 방식이 조금 복잡해 보였습니다.이를 달성하는 더 쉬운 방법이 있는지 알고 싶습니다. 값을 NaN에 입력하면 올바르게 작동하며, 이제 xy 값은 같은 금액입니다. 그러나 벡터에서 값을 삭제하거나 정렬하면 xy 값이 달라집니다.

나는 수정이나 깃발 등을 원했다.

x = 2*rand(10) - rand(10) 
xx = 10:10:100; 

figure; 
for i=1:length(x) 
    for j=1:length(x(i,:)) 
     if x(i,j) < 0 
      x(i,j) = NaN; 
     end 
    end 
end 

plot(xx,x) 

전체 코드가 너무 커서 여기에 게시 할 수 없습니다.

는이 경우

plot(x(x>0)) 

를 사용함으로써 달성 될 수있다 (플롯 기능은 단순히 해당 y1,2,3... 등에 사용되도록) x -values ​​비 대응 갖는 경우, 해당하는 값 실제 코드에서 측정 된 데이터와는 다르다. 여기서는 단순화를 위해 간단히 10 번째 단계를 사용한다.

x = 2*rand(10) - rand(10) 
xx = 10:10:100; 

plot(xx,x(x>0)) 

위의 코드는 "벡터는 동일한 길이 여야합니다."라는 메시지와 함께 오류가 발생합니다.

+0

음모를 꾸미고 싶은 벡터가 있는데 제거 할 음수 값이 포함되어 있습니까? –

+0

음수를 제거하고 싶지 않습니다. 음수가 음모에 나타나지 않기를 바랍니다. 음모를 사용하면 선이이 값에 연결되지 않습니다. – Kev1n91

+0

나는 단지 내가 올바르게 이해하고 있는지 확인하고 싶다. 음수 값없이 벡터를 그립니다. –

답변

4

음수 값 대신 NaN을 사용하는 것과 같습니다. 원래의 벡터는 전혀 수정되지 않습니다. 이 솔루션은 벡터화되어 있습니다.

y = 2*randn(10,1) - randn(10,1); 
figure(); plot(1:numel(y), y./(y<=0)); 
+0

답변 해 주셔서 감사합니다. 이 코드를 실행하면 빈 그림 만 나오고 다른 사람은 똑같은 경험을합니까? Matlab R2016 b – Kev1n91

+0

@ Kev1n91을 사용하고 있습니다. 임의성을 가진 것입니다 ... 가시 선을 얻을 때까지 여러 번 실행하십시오. –

+0

물론, 오. 그러나이 솔루션은 해당 x 값을 처리합니까? (이 점을 지적하기위한 질문에 대한 편집이 있습니다.) – Kev1n91

1
a = [50, -1, 10, 5, 8, 22, -1]; 
b = a > 0; 
c = a(b); 

출력 : 또한 계산을 저장하고 그것을 수정하지 않고 직접 할 수

[~, s] = size(c); xx = 1:1:s; 

c를

c 
[50, 10, 5, 8, 22] 

이제 플롯 할 수 있습니다. 그냥 음모를 꾸미세요. plot(x(x>0))

+2

OP가 데이터를 수정하고 싶지 않다면, plot (x (x> 0)) –

+0

@AnderBiguri, true이지만 첫 번째 방법은 아마도 더 명확 할 것이다. –

+0

답변 해 주셔서 감사합니다. 게시물을 수정했습니다. 나는 대응하는 x 값을 가지고 있는데, 만약 포스트가 보이면 그것을 바꾼다면 y 값에 대한 x 값의 값은 꺼져있다. 음수 값 (-1)이 있더라도 여전히 해당 값이 있습니다. 둘 다 변경하고 해당 값을 지울 필요가 있습니다 – Kev1n91