2013-10-26 3 views
0

$ x $가 2 차원 벡터이고 A가 2x2 행렬 인 x^TAx-b^Tx 형식의 등고선도를 작성하려고합니다. 다음 코드를 사용하여 플로팅을 시도했습니다.행렬 벡터 함수에 대한 matlab contourf

[x,y] = meshgrid(-5:0.1:5, -5:0.1:5); 
z = x'*A*x - b'*x; 
contourf(x,y,z); 

분명히 이것이 치수 문제로 인해 작동하지 않았습니다. 그런데 어떻게 이런 종류의 윤곽을 그릴 수 있습니까?

답변

0

z의 계산에서 x는 사용한 x 좌표의 행렬이 아니라 점의 x 좌표와 y 좌표의 벡터입니다. 이 코드는 각 점의 x 및 y 좌표를 가져 와서 해당 점에서 z를 계산 한 다음 올바른 크기의 행렬에 다시 놓습니다.

[x,y] = meshgrid(-5:0.1:5, -5:0.1:5); 
X=[x(:)';y(:)']; 
for i=1:length(X)  
    z(i) = X(:,i)'*A*X(:,i) - b*X(:,i); 
end 
z=reshape(z,size(x)); 
contourf(x,y,z); 
+0

이것은 매우 도움이됩니다. 감사합니다! – dinosaur