problem doing implicit plotting
显示 更早的评论
Hi, I am trying to make an implicit 3D plot in Matlab. A Matlab Help page says to use the following (as an example):
f = @(x,y,z) x.^2 + y.^2 - z.^2;
interval = [-5 5 -5 5 0 5];
fimplicit3(f,interval)
This works fine. But if I try to complicate things a bit by changing f to:
f = @(x,y,z) x.^2 + y.^2 - z.^2 + x.*y.
then I get the error message "Error: Invalid expression. Check for missing or extra characters".
Any idea what the problem is?
Thank you!
回答(1 个)
Remove the dot at the end of the expression x.*y.
6 个评论
Chris
2024-7-12
Walter Roberson
2024-7-12
x.^2
does not mean "a reference to variable x, squared", (x.)^2 .
It means "the content of x, element-wise-power, 2"
The .^ part is a single operator, element-wise-power and it is different than the ^ operator, which is "matrix power" .
x^2
is x*x which is x matrix-multiply x.
x.^2
is element-by-element squaring of x
Chris
2024-7-12
Sam Chak
2024-7-12
So my question is why do we use "." everywhere but for y in the last term "x.y"?
I guess you were under the impression (learn by example) that the dots in the 1st example are all placed after the variables x, y, z.
For the 2nd example

perhaps writing as follows is clearer for you to follow:
f = @(x,y,z) (x).^2 + (y).^2 - (z).^2 + (x).*(y);
The two-character symbols ".^" (dot-power) and ".*" (dot-product) are math operators in MATLAB.
@Chris, you can see the effect of the dot in this example and comparison.
x = [1 2;
3 4];
% Case 1: element-wise product
y = x.^2
% Case 2a: 2x2 matrix multiplication
y = x^2
% Case 2b: 2x2 matrix multiplication
y = [x(1)*x(1) + x(2)*x(3), x(3)*x(1) + x(4)*x(3)
x(1)*x(2) + x(2)*x(4), x(3)*x(2) + x(4)*x(4)]
Chris
2024-7-12
类别
在 帮助中心 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!