3D cylinder code debugging
1 回表示 (過去 30 日間)
古いコメントを表示
Hi, I am trying to implement a 3D cylinder code, and here is the code:
nCS = 2; %number of cross section of cylinder
nNodes = 50; %number of nodes per cross section
rSC = size * ones(1, nNodes); %set length of each vertices
theta = linspace(0, 2* pi, nNodes); %set angle of each vertices
polar(theta, rSC)
zSC = linspace(0, hSC, nCS)'; %create z coordinates, with height hSC
[xSC,ySC] = pol2cart(theta, rSC); %transform from polar to cartisen
XSC = repmat(xSC, nCS, 1); %repeat for array of number of cross sections
YSC = repmat(ySC, nCS, 1);
ZSC = repmat(zSC, 1, nNodes); %repeat for number of z-layers
xSC_lid = zeros(2, nNodes); %creating the top and bottom lid
ySC_lid = zeros(2, nNodes);
zSC_lid = repmat([0, hSC], 1, nNodes);
X = [xSC_lid(1,:); XSC; xSC_lid(2,:)];
Y = [ySC_lid(1,:); YSC; ySC_lid(2,:)];
Z = [zSC_lid(1,:); ZSC; zSC_lid(2,:)];
surf(X, Y, Z)
The error message is

What is wrong and how to solve this?
0 件のコメント
採用された回答
Matt J
2022 年 12 月 3 日
編集済み: Matt J
2022 年 12 月 3 日
nCS = 2; %number of cross section of cylinder
nNodes = 50; %number of nodes per cross section
[X,Y,Z]=cylinder(ones(1,nCS),nNodes);
surf(X,Y,Z,'FaceAlpha',0.7)
patch('XData',X(1,:),'YData',Y(1,:), 'ZData',Z(1,:),'FaceColor','r');
patch('XData',X(nCS,:),'YData',Y(nCS,:), 'ZData',Z(nCS,:),'FaceColor','r');
6 件のコメント
その他の回答 (1 件)
Torsten
2022 年 12 月 3 日
zSC_lid is an 1 x nNodes vector:
zSC_lid = repmat([0, hSC], 1, nNodes);
Thus it has only one row.
But you reference the second row in the command
Z = [zSC_lid(1,:); ZSC; zSC_lid(2,:)];
which does not exist.
Thus MATLAB throws an error.
参考
カテゴリ
Help Center および File Exchange で Get Started with Aerospace Blockset についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!