2016-09-22 4 views
1

우선, 나는 단지 내가 matlab을 사용하는 데 익숙하지 않다라고 말하고 싶지만 임무가 필요하다. 나는 "브라운 운동"을 만들어야한다. 내 코드는 현재 다음과 같이 찾고 :플로팅 브라운 운동 matlab

clf 
hold on 
prompt = 'Ge ett input'; 
size = input(prompt) ; 
numParticles = input('Ange antal partiklar'); 
axis([-size size -size size]); 
Part = []; 
color = 'brkgmyco'; 
for i = drange(1:numParticles) 
    Part = [Part [0;0]]; 
end 
for i = drange(1:200) 

    dxdy = randn(2,numParticles); 
    k = Part 
    Part = Part + dxdy; 

내 관심은 인쇄하는 방법을 당신이 정말로 지정을 위해 무슨 일이 일어나고 있는지 볼 수 있도록, 심지어 모든 인쇄에 약간의 지연처럼 원하는 것, 달성이 가능하다 지금 작성한 코드 또는 변경해야 할 코드가 있습니까? 미리 감사드립니다!

+1

첫 번째 루프를 'Part = 0 (2, numParticles);로 대체 할 수 있습니다. – EBH

+0

['pause'] (https://de.mathworks.com/help/matlab/ref/pause.html) 명령. –

답변

0

여기에 관계없이 당신이 뭘 하려는지의 코드에 몇 가지 기본적인 문제입니다

  1. 당신은 변수 이름으로 size을 사용합니다. 이렇게하면 MATLAB의 함수 size을 무시합니다.
  2. 함수 zeros은 0으로 초기화 된 배열을 만듭니다. 루프는 필요 없습니다.
  3. randn을 루프에서 200 번 계산하는 대신 dxdy = randn(2,numParticles,200)과 함께 한 번 수행 한 다음 루프 내에서 dxdy(:,:,i)을 참조하기 만하면됩니다.
  4. 합산에 대해서도 동일하게 적용됩니다. 루프 내에서 누적 합계를 계산하는 대신 cumsumPart = cumsum(randn(2,numParticles,200),3);과 같이 사용하고 루프 내에서 Part(:,:,i)을 참조하십시오.

이제 작업을 완료하십시오. 당신은 인쇄 방법을 알고 싶다고 말했지만 그래픽 객체를 참조하는 axis, clfhold과 같은 명령을 사용하기 때문에 플롯을 원한다고 생각합니다. 그러나, 당신은 정말로 아무것도 음모를 꾸미지 않습니다.
2D에서 플로팅하기위한 기본적이고 일반적인 기능은 plot이지만 다른 많은 더 많은 특수 기능이 있습니다. 그들 중 하나는 scatter이고 자매 기능이 gscatter이며, x, ygroup의 세 배가 걸리며 각 (x(k),y(k))group(k)으로 표시됩니다.

이 코드는 축에있는 입자을 나타내는, 그들의 움직임을 애니메이션 :

prompt = 'Ge ett input'; 
scope = input(prompt) ; 
numParticles = input('Ange antal partiklar'); 
N = 500; 
Part = cumsum(randn(2,numParticles,N)*scope/100,3); 
h = gscatter(Part(1,:,1),Part(2,:,1),1:numParticles); 
axis([-scope scope -scope scope]); 
legend off 
for k = 2:N 
    for p = 1:numParticles 
     h(p).XData = Part(1,p,k); 
     h(p).YData = Part(2,p,k); 
    end 
    drawnow 
end 

이 당신이 찾는 무엇인가?

+0

죄송합니다. 집에 와서 다시 살펴보기 시작하여 코드를 실행하고 이해할 수 있는지 확인하십시오. –

+0

불분명 한 부분을 언제든 물어볼 수 있습니다. – EBH

+1

당신의 도움으로 문제를 해결했다고 생각합니다. 당신은 그것을 해결하지만, 내가 이해할 수있는 코드가 필요합니다 :), 도움을 많이 주셔서 감사합니다, 크게 감사! –