2017-10-20 1 views
0

저는 Matlab을 처음 사용하고 있으며 모든 X 값에 대해 Y 함수를 플롯하려고합니다. 이를 위해 아래 코드를 사용했습니다. 그림 화면은 열리지 만 화면에는 아무 것도 없습니다.Plot 명령에 아무 것도 표시되지 않습니다.

>> X = [0:0.001:0.04] 
>> for i=1:40 
Y = 6113 * cos(2*pi*200*X(i) + 1508); 
end 
>> plot(Y,X) 

그리고 이것도 시험해 보았습니다.

>> X = [0:0.001:0.04] 
>> for i=1:40 
Y = 6113 * cos(2*pi*200*X(i) + 1508); 
>> plot(Y,X) 
end 

어떻게 해결할 수 있습니까? 고마워,

답변

2

첫 번째 사항부터 시작합니다.

JollyRoger 대답은 정확하지만 잘못하고있는 부분을 보도록하겠습니다.

YX을 플롯하려고합니다. Y 스칼라 동안

plot(Y,X) 

그러나 당신의 X는 벡터이다. 또한 당신은 X 같은 명령은 독립 변수

입니다 반전한다
plot(X,Y) 

그래서 각 X - 값에 대한 Y 벡터 잡고 정보를 만들기 위해 무엇을 할 수 있는가? 당신은 각 항목에 저장해야합니다 모든 변수 Y

for k=1:40 
Y(k) = 6113 * cos(2*pi*200*X(k) + 1508); 
end 

먼저 현재 인덱스와 벡터가된다. 아시다시피 나는 인덱스 변수를 k으로 변경 했으므로 i은 복소수이기도합니다. 이 plot(X,Y)을 플롯하려고한다면

것은, 당신은 X 같은 오류를 얻을 것입니다 및 YX 더 값이 동일한 길이를 가지고 있겠지. 플롯 명령을 적용 할 필요가 그래서 : 당신이 X으로 값의 동일한 금액을 가지고 Y을 원하는 경우에

plot(X(1:40),Y) 

을 당신이 당신의 벡터 X만큼 for 루프을해야

for k=1:length(X) 
Y(k) = 6113 * cos(2*pi*200*X(k) + 1508); 
end 
plot(X,Y) 

마지막으로, for-loop에서 변수를 사용하기 전에 변수를 미리 할당하여 코드 실행 시간을 개선하십시오. 예 :

Y=zeros(size(X)); 
for k=1:length(X) 
Y(k) = 6113 * cos(2*pi*200*X(k) + 1508); 
end 
plot(X,Y) 
0

방금이 방법을 찾았습니다. 아래 코드를 시도해 보니 작동했습니다.

>> Y = 6113 * cos(2*pi*200*X + 1508); 
>> plot(Y,X) 
관련 문제