You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
Surf a function with different values
1 view (last 30 days)
Show older comments
I'm trying to surf a function f that takes 2 values: 1 if (x,y) is in A and 2 if (x,y) is in B. How can I do that? I attach also a drawing for x,y.
Accepted Answer
Torsten
on 21 May 2023
Define the function as
f = @(x,y) (y>=2*x) + 2*(y<2*x);
and make a surface plot.
17 Comments
Alexandra Roxana
on 21 May 2023
Edited: Alexandra Roxana
on 21 May 2023
But the function doesn't depend on x and y. It is a constant function. And I want to go further with more triangles dividing the domain. And to make it have a different value within each triangle.
Torsten
on 21 May 2023
Edited: Torsten
on 21 May 2023
The function has exactly the values you want:
f = @(x,y) (y>=2*x) + 2*(y<2*x);
f(0,1)
ans = 1
f(1,0)
ans = 2
But I admit: Defining a function with prescribed values on each triangle of a triangulation will soon become a hard job. And I really don't understand what it should be good for ...
Alexandra Roxana
on 21 May 2023
I want the value to be 1 in every x and y, not just x=0 and y=1.
Alexandra Roxana
on 21 May 2023
I've been thinking of this problem for weeks and can't seem to come to some results.
Alexandra Roxana
on 21 May 2023
Edited: Alexandra Roxana
on 21 May 2023
Long story short: I want to calculate the pressure on each triangle from the red domain. The left-hand side of the formula is the pressure on each triangle; the right-hand side is the sum of values of each node from the triangle. The thing is the pressure is constant on each triangle and it has to look like that in the surf. Before it looked like a continuous function which isn't right. And I wanted at first to begin with a simple example.
Alexandra Roxana
on 22 May 2023
It looks really good but there's a slight problem: what can I modify so I can see only the two triangles in the figure? It must look like a jump from 1 to 2.
Alexandra Roxana
on 22 May 2023
No, it has to look like the first one without the middle part, in 3D also.
Alexandra Roxana
on 22 May 2023
Probably the function has to be modified, I momentarily don't see how.
Alexandra Roxana
on 22 May 2023
The marked part must not appear
Torsten
on 22 May 2023
You might want to play with this representation:
x1 = [0,0,1];
y1 = [0,2,2];
z1 = [1,1,1];
x2 = [0,1,1];
y2 = [0,0,2];
z2 = [2,2,2];
hold on
s1 = fill3(x1,y1,z1,'r');
s2 = fill3(x2,y2,z2,'b');
hold off
view(25,45)
zlim ([0 3])
rotate(s1,[0 0 1],180)
rotate(s2,[0 0 1],180)
Alexandra Roxana
on 23 May 2023
Edited: Alexandra Roxana
on 23 May 2023
Unfortunately that's not going to help me very much because I want to go further and do the same thing but with more triangles like in this case and in each triangle the function to have a different value:
Alexandra Roxana
on 23 May 2023
Edited: Alexandra Roxana
on 23 May 2023
Thank you for all your help!
Alexandra Roxana
on 27 May 2023
The method from the link seems to work; however I'm a bit confused with the values of n1, n2 and n3. I don't know what values I should put: if I put [1,1,1] the first coordinates are different, the rest is the same as should be. So I'm guessing the choice of n1, n2 and n3 is wrong.
More Answers (0)
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)