How to fix invalid array indexing ?
Afficher commentaires plus anciens
Hi guys im trying to colect all outputs tables that are created in-array. Here is my code :
clear;
clc;
H = 5;
L = 15;
Ns = 2;
Nb = 1;
PortalHeight = H;
Bayspan = L;
NumberStory = Ns;
NumberBay = Nb;
% Variable1
h = [0.8,1.00,1.20,1.40,1.6,1.80];
% Variable2
Lss = [2.00,2.40,2.80,3.20,3.60,4.00];
% Variable3
Nss = [2,3,4];
% Definition
Var1HeightofTrussBeam = h;
Var2LengthSpecialSegment = Lss;
Var3NumberSpecialSegment = Nss;
Totalvariant = zeros(numel(Var1HeightofTrussBeam)*numel(Var2LengthSpecialSegment)*numel(Var3NumberSpecialSegment),1);
Xbase = zeros(1,length(Totalvariant));
Zbase = zeros(1,length(Totalvariant));
Xcol = zeros(1,length(Totalvariant));
Zcol = zeros(1,length(Totalvariant));
Xos = zeros(1,length(Totalvariant));
Zos = zeros(1,length(Totalvariant));
Xss = zeros(1,length(Totalvariant));
Zss = zeros(1,length(Totalvariant));
X = zeros(1,length(Totalvariant));
Z = zeros(1,length(Totalvariant));
jointbase = zeros(1,length(Totalvariant));
jointcolumn = zeros(1,length(Totalvariant));
jointordinarysegment = zeros(1,length(Totalvariant));
jointtopordinarysegment = zeros(1,length(Totalvariant));
jointbottomordinarysegment = zeros(1,length(Totalvariant));
jointspecialsegment = zeros(1,length(Totalvariant));
jointtopspecialsegment = zeros(1,length(Totalvariant));
jointbottomspecialsegment = zeros(1,length(Totalvariant));
ijk = 0
for i = 1:numel(h)
for j = 1:numel(Lss)
for k = 1:numel(Nss)
ijk = ijk+1
%% Base(base)
Xbase(ijk) = L*(0:NumberBay);
Zbase(ijk) = repelem(0,1,length(Xbase));
%% Column(col)
Xcolumn = L*(0:NumberBay);
Zcolumn = repelem(H*(1:NumberStory),1,length(Xcolumn));
Xbotbeam = L*(0:NumberBay);
Zbotbeam = repelem((H*(1:NumberStory)-h(i)),1,length(Xbotbeam));
% replicate [X] to be the same size as [Z] for plotting:
Xcol(ijk) = repmat([Xcolumn,Xbotbeam],1,NumberStory);
Zcol(ijk) = [Zcolumn,Zbotbeam];
%% Ordinary Segment
% calculate span length of ordinary segment
Los = (L-Lss(j))/2;
Nos = Los/h(i);
Nos = round(Nos);
los = Los/Nos;
assert(logical(los*Nos*2+Lss(i)==15),"span must be 15m");
% top and bottom joint of ordinary segment(os)
XTopOrdinarySegment = reshape([los*(1:Nos),(L/2+Lss(j)/2)+los*(0:Nos-1)].'+L*(0:(NumberBay-1)),1,[]);
XBottomOrdinarySegment = XTopOrdinarySegment;
ZTopOrdinarySegment = repelem(H*(1:NumberStory),1,2*Nos*NumberBay);
ZBottomOrdinarySegment = repelem(H*(1:NumberStory)-h(i),1,2*Nos*NumberBay);
% replicate [X] to be the same size as [Z] for plotting:
Xos(ijk) = repmat([XTopOrdinarySegment,XBottomOrdinarySegment],1,NumberStory);
Zos(ijk) = [ZTopOrdinarySegment,ZBottomOrdinarySegment];
%% Special Segment
% calculate span length of special segment
lss = Lss(j)/Nss(k);
% top and bottom joint of special segment(ss)
XTopSpecialSegment = reshape((lss*(0:Nss(k))+L/2-Lss(j)/2).'+L*(0:(NumberBay-1)),1,[]);
XBottomSpecialSegment = XTopSpecialSegment;
ZTopSpecialSegment = repelem(H*(1:NumberStory),1,length(XTopSpecialSegment));
ZBottomSpecialSegment = repelem(H*(1:NumberStory)-h(i),1,length(XBottomSpecialSegment));
% replicate [X] to be the same size as [Z] for plotting:
Xss(ijk) = repmat([XTopSpecialSegment,XBottomSpecialSegment],1,NumberStory);
Zss(ijk) = [ZTopSpecialSegment,ZBottomSpecialSegment];
%% Plot Joint
X(ijk) = [Xbase,Xcol,Xos,Xss];
Z(ijk) = [Zbase,Zcol,Zos,Zss];
scatter(X,Z,'filled'),grid on
%% Name Joint
jointbase(ijk) = table((1:numel(Xbase))',Xbase(ijk)',Zbase(ijk)','VariableNames',{'ID','X','Z'});
jointcolumn(ijk) = table((max(jointbase(ijk).ID)+1:numel(Xcol(ijk))+max(jointbase(ijk).ID))',Xcol(ijk)',Zcol(ijk)','VariableNames',{'ID','X','Z'});
jointordinarysegment(ijk) = table((max(jointcolumn(ijk).ID)+1:numel(Xos(ijk))+max(jointcolumn(ijk).ID))',Xos(ijk)',Zos(ijk)','VariableNames',{'ID','X','Z'});
jointtopordinarysegment(ijk) = jointordinarysegment(ijk)(ismember(jointordinarysegment(ijk).Z,Zcolumn),:);
jointbottomordinarysegment(ijk) = jointordinarysegment(ijk)(ismember(jointordinarysegment(ijk).Z,Zbotbeam),:);
jointspecialsegment(ijk) = table((max(jointbottomordinarysegment(ijk).ID)+1:numel(Xss(ijk))+max(jointbottomordinarysegment(ijk).ID))',Xss(ijk)',Zss(ijk)','VariableNames',{'ID','X','Z'});
jointtopspecialsegment(ijk) = jointspecialsegment(ijk)(ismember(jointspecialsegment(ijk).Z,Zcolumn),:);
jointbottomspecialsegment(ijk) = jointspecialsegment(ijk)(ismember(jointspecialsegment(ijk).Z,Zbotbeam),:);
end
end
end
%check angle
%anglespecialsegment = (Lss(1)/Nss(1))/h(1);
Error : Error: File: cobadoang4.m Line: 107
Column: 32
Invalid array indexing.
Here I give the example of table result one variant when h(1), Lss(1),Nss(1) :

Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Solver Outputs and Iterative Display dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



