2d truss analysis

조회 수: 4 (최근 30일)
caroline
caroline 2019년 3월 23일
댓글: Star Strider 2019년 3월 23일
doing trusses for statics class and i keep getting this error when running. triple checked my work i do not have any negative integers
Index in position 1 is invalid. Array
indices must be positive integers or
logical values.
Error in CEE210_CP3_verification (line
70)
PosVec(j,:)=NodeP(EN,:)-NodeP(SN,:);
nNodesP =6 ;
nMembersP =9 ;
NodeP = zeros(nNodesP, 3); %Initialize memory storage
MemberP = zeros(nMembersP, 2);
%.... Input node coordinates
%Member 9 Node 3 to Node 4
NodeP(1,:) = [0,0,0];
NodeP(2,:) = [4,3,0];
NodeP(3,:) = [8,3,0];
NodeP(4,:) = [12,0,0];
NodeP(5,:) = [4,0,0];
NodeP(6,:) = [8,0,0];
MemberS(1,:) = [1,2]; %Member 1 Node 1 to Node 2
MemberS(2,:) = [1,5]; %Member 2 Node 2 to Node 3
MemberS(3,:) = [2,5]; %Member 3 Node 2 to Node 4
MemberS(4,:) = [2,3]; %Member 4 Node 2 to Node 5
MemberS(5,:) = [2,6]; %Member 5 Node 1 to Node 3
MemberS(6,:) = [6,5]; %Member 6 Node 1 to Node 4
MemberS(7,:) = [3,6]; %Member 7 Node 3 to Node 6
MemberS(8,:) = [3,4]; %Member 8 Node 3 to Node 5
MemberS(9,:) = [4,6]; %Member 9 Node 3 to Node 4
PosVecP = zeros(nMembersP, 3); %Initialize memory storage
UnitVecP = zeros(nMembersP, 3);
OppPosVecP = zeros(nMembersP, 3);
OppUnitVecP = zeros(nMembersP,3);
Memberlength=zeros(nMembersP,1);
for (j = 1 : nMembersP)
SN = MemberP(j,1); %SN = start node
EN = MemberP(j,2);
PosVecP(j,:)=NodeP(EN,:)-NodeP(SN,:);
OppPosVecP(j,:) = -PosVecP(j,:);%EN = end node
Memberlength(j,:) = norm(PosVecP(j,:));
UnitVecP(j,:) = PosVecP(j,:)./Memberlength(j,1);
OppUnitVecP(j,:) = -UnitVecP(j,:);
%Finish this section to compute the position vector, length, unit vector,
%and negative unit vector for each member in the truss.
end
%% .Create output for command window
fprintf('%s\n' , '----------------------------------------')
fprintf('%s\n' , '-------------Planar Truss---------------')
fprintf('%s\n' , '----------------------------------------')
for (i = 1 : nNodesP)
fprintf('%s%8i%8.3f%8.3f%8.3f\n',' Node: ',i, NodeP(i,:)')
end
fprintf('\n')
for (i = 1 : nMembersP)
fprintf('%s%8i%8.3f%8.3f%8.3f\n',' Unit Vector: ',i, UnitVecP(i,:)')
end
fprintf('\n\n\n')
%% .Create the plot
fig1 = figure(1); clf; grid on; axis equal; hold on;
xlabel('X'); ylabel('Y'); title('Planar Truss');
for m = 1 : nMembersP
SN = MemberP(m,1);
EN = MemberP(m,2);
X = [NodeP(SN,1); NodeP(EN,1)];
Y = [NodeP(SN,2); NodeP(EN,2)];
Z = [NodeP(SN,3); NodeP(EN,3)];
p = plot(X,Y);
set(p, 'Color', 'k', 'LineWidth', 2);
end % for m, nMembersP
scatter(NodeP(:,1),NodeP(:,2),'fill','red');

답변 (1개)

Star Strider
Star Strider 2019년 3월 23일
You don’t have negative integers, however positive integers are integers greater than 0.
Here:
SN = MemberP(j,1); %SN = start node
EN = MemberP(j,2);
PosVecP(j,:)=NodeP(EN,:)-NodeP(SN,:);
your ‘SN’ and ‘EN’ values are both 0. That is not a valid MATLAB index.
  댓글 수: 2
caroline
caroline 2019년 3월 23일
so please how do i change that so its not 0
Star Strider
Star Strider 2019년 3월 23일
I am not certain what you are doing.
One option could be:
PosVecP(j,:) = NodeP(j,:)-NodeP(j,:);
or perhaps:
PosVecP(j,:) = EN(j,:)-SN(j,:);
I leave it to you to create the matrix you want.

댓글을 달려면 로그인하십시오.

카테고리

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