의 두 번째 유도체의 우리가matlab에 - 데이터
[x]=[0.1 0.2 0.3 0.4]
[y]=[0.25 0.30 0.40 0.55]
y1=diff(y)./diff(x)
y2=diff(y1)./diff(x)
있다고 가정 해 봅시다 내가 얻는 결과는
매트릭스 치수 나는이 문제를 해결하려면 어떻게
을 동의해야입니까?
의 두 번째 유도체의 우리가matlab에 - 데이터
[x]=[0.1 0.2 0.3 0.4]
[y]=[0.25 0.30 0.40 0.55]
y1=diff(y)./diff(x)
y2=diff(y1)./diff(x)
있다고 가정 해 봅시다 내가 얻는 결과는
매트릭스 치수 나는이 문제를 해결하려면 어떻게
을 동의해야입니까?
this 문서로 리디렉션됩니다. 당신이 볼 수 있듯이
diff(y1) = [y1(2)-y1(1) y1(3)-y1(2) ... y1(m)-y(m-1)]
것은, 당신이 하나 개의 값을 잃어 버리게된다 : 당신은 diff 기능을 사용할 때 그것이 무엇을하는 출력이이기 때문에, 실제로, m-1 (m 길이되는) 당신에게 벡터를 반환합니다 , 그리고 귀하의 오류를 설명합니다. diff (y1)은 길이 2의 벡터와 같고 diff (x)는 길이 3의 벡터와 같기 때문에 마지막 행을 할 때 diff (y1)을 diff (x)로 나눌 수 없습니다.
수행하려는 작업에 따라 다음에 코드를 변경할 수 있습니다
[x]=[0.1 0.2 0.3 0.4]
[y]=[0.25 0.30 0.40 0.55]
y1=diff(y)./diff(x)
y2=diff(y1)./diff(x(1:end-1))
는 Y의 파생에 근접하려면, 정말 당신은 내가 링크 된 페이지의 예를 살펴하는 것이 좋습니다 . MATLAB 설명서는 항상 함수를 사용하는 방법에 대한 예제를 제공하므로 go take a look. 설명서에 따르면 벡터 y의 부분 파생어를 계산하려면 x 벡터의 단계가 필요합니다.
x=[0.1 0.2 0.3 0.4]
y=[0.25 0.30 0.40 0.55]
x_step = 0.1
y1=diff(y)./x_step
y2=diff(y1)./x_step
x=[0.1 0.2 0.3 0.4] ;
y=[0.25 0.30 0.40 0.55] ;
dy = gradient(y)./gradient(x) ;
d2y = gradient(dy)./gradient(x) ;
이 코드 스 니펫은 문제를 해결할 수 있지만 왜/어떻게하는지 설명하면이 대답이 크게 향상됩니다. –
['gradient'] (https://nl.mathworks.com/help/matlab/ref/gradient.html#bvifdfu-5)는 내부 점과 다르게 경계 그라데이션을 계산합니다. 이로 인해 원하지 않는 최종 효과가 발생할 수 있습니다. – m7913d
확인 [여부 (https://www.mathworks.com/help/matlab/ref/diff.html?requestedDomain=www.mathworks.com) 당신은 행렬 중 하나를 바꾸어 필요 의도 한대로 작동해야합니다. – Alfabravo
마지막 줄에서'diff (y1)'은 길이가 2 인 벡터이고 diff (x)는 길이가 3 인 벡터이므로 오류가 발생합니다. – kedarps