2d truss analysis
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (1)
Star Strider
am 23 Mär. 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 Kommentare
Star Strider
am 23 Mär. 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.
Siehe auch
Kategorien
Mehr zu Structural Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!