When to use .^ notation?
조회 수: 13 (최근 30일)
이전 댓글 표시
For an assignment, I am supposed to use MatLab to plot the vector field
. I've tried
[x,y]=meshgrid(-5:1:5,-5:1:5);
quiver(x,y,0.2*(x.^2+y.^2),0.2*(x-y),0);
which gives me the following picture:

I have also tried this:
[x,y]=meshgrid(-5:1:5,-5:1:5);
quiver(x,y,0.2*(x^2+y^2),0.2*(x-y),0);
which gives me this picture:

These are so different, and I'm not sure which one is correct because I don't understand why .^ is giving a different result than just ^ alone.
Any advice is greatly appreciated. Thank you!
댓글 수: 0
채택된 답변
madhan ravi
2018년 12월 4일
when you have a vector the right usage is .^ which is element wise operation each element is raised to the power ^ is only for scalars so use .^
댓글 수: 4
추가 답변 (1개)
Image Analyst
2018년 12월 4일
편집: Image Analyst
2018년 12월 4일
Well you're sort of close - at least you tried - but I don't think either of your attempts is correct. Madhan is correct in that using dot means that it's element-by-element raising to a power. But you need to look at what quiver wants, and that is vectors whereas your x and y are matrices. If you take a second look at it, I think you'll realize you need to use (:) to turn them into vectors when you compute u and v, and you'll get something like this:
[x, y] = meshgrid(-5:1:5, -5:1:5);
u = 0.2 * (x(:) .^ 2 + y(:) .^ 2);
v = 0.2 * (x(:) - y(:));
% Plot quiver:
subplot(2, 1, 1);
quiver(x(:), y(:), u, v, 'LineWidth', 1);
grid on;
axis square;
xlabel('x', 'FontSize', 20);
ylabel('y', 'FontSize', 20);
title('Quiver Plot', 'FontSize', 20);
% Plot surface of the magnitude
subplot(2, 1, 2);
z = reshape(sqrt(u .^ 2 + v .^ 2), [11,11]);
surf(-5:1:5, -5:1:5, z);
xlabel('x', 'FontSize', 20);
ylabel('y', 'FontSize', 20);
title('Magnitude Plot', 'FontSize', 20);

Notice that when x = y (along the diagonal), the vectors are flat, meaning no vertical component, as you'd expect from the equation which involves x-y.
참고 항목
카테고리
Help Center 및 File Exchange에서 Graphics Performance에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!