- The function "generateMesh(model)" was called but the output "U" is not used to access nodes and elements of the generated mesh.
- The variable "pl2 = pdeplot3D(model)" assigns the plot to a variable, but "pdeplot3D" does not return the data in the way you are trying to access. This function is used for plotting and not for extracting X, Y, and Z data directly. You can extract the mesh node coordinates from the generated mesh model.
- The "griddata" function call "Xgrid = griddata(y,z,x,Y,Z,);" is incorrect as the variables "x", "y" and "z" are not defined.
How to subtract surface from pdegplot?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi, sorry for bad english. I want to subtract surface created from x,y,z coordinates from stl model imported by pdegplot. I imported stl model and extacted X,Y,Z values of this model, then by using griddata command i made dimention of X and x same and subtracted and get result like in image. In red section what i want, but result also create subtraction result in blue sections. So is the any way to get only result only in red section? The basic code is presented
model = createpde;
importGeometry(model,'BELT PULLEY.stl');
U= generateMesh(model)
pl2=pdeplot3D(model)
X=pl2.XData;
Y=pl2.YData;
Z=pl2.ZData;
Xgrid = griddata(y,z,x,Y,Z,);
hh=plot3(X-Xgrid,Y,Z)
0 commentaires
Réponses (1)
Maneet Kaur Bagga
le 8 Oct 2024
Modifié(e) : Maneet Kaur Bagga
le 8 Oct 2024
Hi ,
As per my understanding, the code has the following errors:
Please refer to the modified code below for better understanding of the above mentioned points:
model = createpde;
mesh = generateMesh(model); % Generate mesh for the geometry
% Extract mesh node coordinates
X = model.Mesh.Nodes(1, :); % X coordinates
Y = model.Mesh.Nodes(2, :); % Y coordinates
Z = model.Mesh.Nodes(3, :); % Z coordinates
% Use griddata
Xgrid = griddata(Y, Z, X, Y, Z); % Interpolating the X values
% Define bounds for where you want to subtract
x_min = -10; x_max = 10;
y_min = -5; y_max = 5;
z_min = 0; z_max = 15;
% Create a mask for the red section
mask = (X > x_min) & (X < x_max) & (Y > y_min) & (Y < y_max) & (Z > z_min) & (Z < z_max);
% Apply the subtraction only in the selected region
X_subtracted = X;
X_subtracted(mask) = X(mask) - Xgrid(mask);
% Plot the result
figure;
plot3(X_subtracted, Y, Z);
I hope this resolves your query!
0 commentaires
Voir également
Catégories
En savoir plus sur Geometry and Mesh dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!