2-D Truss Analysis

조회 수: 5 (최근 30일)
Jillian Franke
Jillian Franke 2020년 10월 22일
답변: KSSV 2020년 10월 22일
I keep getting this error message when trying to plot my code:
Index in position 2 exceeds array bounds (must not exceed 1).
Error in CEE210_CP3 (line 283)
p=plot(NodePoly(:,1),NodePoly(:,3));
Here is my original code
%.... Input problem data (radius, # of points, # of members, theta)
R = 10; %Radius
nNodesPoly = 6;
nMembersPoly = nNodesPoly - 1;
theta = pi/nMembersPoly; %a semi-circular arch
%% .. Use a for loop to compute the x, y and z coordinates of each point and
%.... create a matrix to store each point.
%.... You can use the variable name "nodePoly" for the nodal coordinates of
%.... the polygon.
for n= 1 : nNodesPoly
x(n,:)= [R*cos((n-1)*theta)]; %x as a function of R and theta
y(n,:)= [R*sin((n-1)*theta)]; %y as a function of R and theta
z(n,:)= [0]; %z as a function of R and theta
end
NodePoly=[x;y;z];
%.... Use a for loop to compute the members or connections and the unit
%.... vector for each member.
%.... You can use the variable name "UnVecPoly" for the unit vectors.
PosVecPoly= zeros(nMembersPoly,3); %initializing memory storage
UnitVecPoly= zeros(nMembersPoly,3);
OppPosVecPoly= zeros(nMembersPoly,3);
for n= 1 : nMembersPoly;
MemberPoly(n,:)=[n,n+1];
SN= MemberPoly(n,1);
EN= MemberPoly(n,2);
PosVecPoly(n,:)=NodePoly(EN,:)-NodePoly(SN,:);
Length(n,:)= norm(PosVecPoly(n,:));
UnVecPoly(n,:)= PosVecPoly(n,:)/Length(n,:);
end
%% .Create output for command window
fprintf('%s\n' , '---------------------------------------')
fprintf('%s\n' , '--------------Polygon------------------')
fprintf('%s\n' , '---------------------------------------')
for (i = 1 : nNodesPoly)
fprintf('%s%8i%8.3f%8.3f%8.3f\n',' Node: ', NodePoly(i,:)')
end
fprintf('\n')
for (i = 1 : nMembersPoly)
fprintf('%s%8i%8.3f%8.3f%8.3f\n',' Unit Vector: ',i, UnVecPoly(i,:)')
end
fprintf('\n\n\n')
%% ..Create the plot
fig3 = figure(3); clf; grid on; axis equal; hold on;
xlabel('X'); ylabel('Y'); title('Polygon Truss');
p=plot(NodePoly(:,2),NodePoly(:,3));
set(p,'Color','black','LineWidth',2);
scatter(NodePoly(:,2),NodePoly(:,3),'fill','green');
% End of Program

답변 (1개)

KSSV
KSSV 2020년 10월 22일
Repalce this line:
NodePoly=[x ;y ;z];
with
NodePoly=[x y z];

카테고리

Help CenterFile Exchange에서 Structural Analysis에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by