2d truss analysis

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 个)

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 个评论

so please how do i change that so its not 0
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.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Structural Analysis 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by