Combining two surfaces from two files into one surface plot

14 views (last 30 days)
Is there any way to combine two surface plots from diffterent matlab files into one surface plot?
Assuming that the range of X,Y,Z coordinates of the two surfaces are close.

Accepted Answer

Dave B
Dave B on 6 Apr 2022
Edited: Dave B on 6 Apr 2022
Do you mean two different .fig files?
You can generally find objects that live in an axes with findobj, which is good for looking for an object of a specific type. You can reparent those objects by setting the Parent (e.g. to a new axes, or from one old axes into another):L
This bit creates a couple of example surfaces
z1=peaks;
z2=z1+randn(size(z1))/5;
figure(1)
surf(z1)
savefig('foo1.fig')
figure(2)
surf(z2,'FaceColor','r')
savefig('foo2.fig')
The bit below opens the figures
f1 = openfig('foo1.fig');
f2 = openfig('foo2.fig');
The final section finds the surfc and copies them into a new axes:
s1 = findobj(f1,'Type','surf');
s2 = findobj(f2,'Type','surf');
figure;
ax=axes; % the new target for the old surfs
copyobj(s1, ax) % or s1.Parent = ax; to move it
copyobj(s2, ax); % or s2.Parent = ax; to move it
% note that the new axes won't inherit the configuration of the old axes
% (e.g. the 3-d view), but see below for an alternative.
view(3)
% or: just do copyobj(s1,s1.Parent) or s2.Parent=s1.Parent if
% you want to copy/move the second surface into the same axes
% as the first, preserving the view and other axes characteristics
  3 Comments

Sign in to comment.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!