MATLAB Answers

0

2D Matrix revolution

Felipe Bayona さんによって質問されました 2019 年 11 月 18 日 10:02
最新アクティビティ darova
さんによって コメントされました 2019 年 11 月 19 日 10:01
Hi community
How can I revolutionize a 2D matrix around an axis to obtain a solid?
Supose a NxN matrix. In each row are the points of a kind of gaussian curve with less amplitude and higher width. Plotting this surface shows something like a half bell that decays to zero. (See Bottom)
I want to obtain a 3D image revolutionazing that matrix, so the solid looks like a complete bell, or a mexican hat.
Notice that each curve in the matrix rows are different.
I have already try with cylinder(), but i can't define the rotation axis, and the result is a segmented solid.
Possible solutions so I can get the 3D image and define the rotation axis?
Thanks a lot
The surface to revolutioniye looks like this:
untitled.jpg
Cylinder shows this:
untitled.jpg

  2 件のコメント

darova
2019 年 11 月 18 日 12:19
Which axis do you want to rotate?
Felipe Bayona 2019 年 11 月 18 日 12:24
I would like to know the general method, where i can specify the axis. In this particular example, I need to do it around the z-axis, to obtain the 'Mexican hat'

サインイン to comment.

2 件の回答

darova
回答者: darova
2019 年 11 月 18 日 13:31

Use cylinder for each curve separately:
z = linspace(-1,1,20); % axis
r = sqrt(1-z.^2); % radius
[x,y,~] = cylinder(r,length(z)-1); % convert to cylinder system
zz = repmat(z',[1 20]); % create 2D matrix for Z matrix
surf(x,y,zz) % sphere

  4 件のコメント

darova
2019 年 11 月 18 日 15:20
attach the data
darova
2019 年 11 月 18 日 16:38
And what is the problem?
x = linspace(0,40,41);
[X,T, rc] = normalDiffusion(4, 1, 1, x, 20);
z = X(i,:); % axis
r = rc(i,:); % radius
[x,y,~] = cylinder(r,length(z)-1); % convert to cylinder system
zz = repmat(z',[1 length(r)]); % create 2D matrix for Z matrix
surf(x,y,zz) % sphere
darova
2019 年 11 月 19 日 10:01
Maybe z and r should be switched?
z = X(i,:); % axis
r = rc(i,:); % radius

サインイン to comment.


回答者: Philippe Lebel 2019 年 11 月 18 日 12:40

  1 件のコメント

Felipe Bayona 2019 年 11 月 18 日 13:14
This only alows to rotate a y=f(x) funtion
My matrix is composed by many curves, because my function is z=f(x,y)

サインイン to comment.



Translated by