2d truss analysis
4 views (last 30 days)
Show older comments
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');
0 Comments
Answers (1)
Star Strider
on 23 Mar 2019
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 Comments
Star Strider
on 23 Mar 2019
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.
See Also
Categories
Find more on Structural Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!