beam's cross-section
显示 更早的评论
Hi, I'm looking for a script or function able to calculate the properties of the cross-section of a beam. I need to know centroid, center of shear, center of torsion, inertia and so on... The program also can calculate only few properties. Does exist one program like my answer in File Exchange?
Thanks Marco
3 个评论
Naveen Meena
2016-10-15
fprintf('Taking Input data For Y,Z Graph:-\n'); data = load('yzdata.txt'); Y_fig = data(:,1); Z_fig= data(:,2); Z_fig = -1*Z_fig;
figure;
plot(Z_fig,Y_fig,'r-','Markersize',10); xlabel('Z-Axis'); ylabel('Y-Axis'); hold on; %fprintf('Tell the point where you want to break the beam:-'); %cross = load('yzcross.txt'); %Y_cross = cross(:,1); %Z_cross = cross(:,2); %p = cross(:,3); %m1 = length(Y_cross); %plot(Z_cross,Y_cross,'b-','Markersize',10);
%%second Approch ...here first approach is not working fprintf('\nTaking Length Input values for Y,Z:-\n'); length = load('length.txt'); Y = length(:,1); Z = length(:,2); yc = length(:,3); zc = length(:,4); %y1 = length(1,1); %y2 = length(2,1); %y3 = length(3,1); E = length(:,5); %z1 = length(1,2); %z2 = length(2,2); %z3 = length(3,2); A = Y.*Z;
%A1 = y1*z1; %A2 = y2*z2; %A3 = y3*z3;
fprintf('Calculating Netural Point:-\n'); y_center = (sum(yc.*A.*E))/sum(E'*A); z_center = (sum(zc.*A.*E))/sum(E'*A);
fprintf('Y_center:-'); disp(y_center); fprintf('Z_center:-'); disp(z_center);
plot(zc,yc,'bx','Markersize',10); plot(z_center,y_center,'bo'); legend('Boundry of Beam','Centriod of a particular Section','Neutral point');
% Here We find Inertia
%first Of all I_YY fprintf('Calculation of I_yy;-\n'); I_yy1 = ((zc-z_center).^2).*A; I_yy2 = (Y.*(Z.^3))/12; I_yy = I_yy1 + I_yy2; I_yy = E.*I_yy.*10^-8; fprintf('I_yy Part Wise:-\n'); disp(I_yy);
tot_I_yy = sum(I_yy); fprintf('Total I_yy'); disp(tot_I_yy);
%Calculation Of I_zz; fprintf('Calculation of I_zz:-\n'); I_zz1 = ((yc-y_center).^2).*A; I_zz2 = (Z.*(Y.^3))/12; I_zz = I_zz1 + I_zz2; I_zz = E.*I_zz.*10^-8; fprintf('I_zz Part Wise:-\n'); disp(I_zz);
tot_I_zz = sum(I_zz); fprintf('Total I_zz'); disp(tot_I_zz);
%Calculation Of I_yz; fprintf('Calculation of I_yz;-\n'); I_yz1 = ((yc-y_center).*(zc-z_center)).*A; I_yz2 = 0; I_yz = I_yz1 + I_yz2; I_yz = E.*I_yz.*10^-8; fprintf('I_yz Part Wise:-\n'); disp(I_yz);
tot_I_yz = sum(I_yz); fprintf('Total I_yz'); disp(tot_I_yz);
fprintf('Inertia Matrix:-\n'); I = [tot_I_yy tot_I_yz; tot_I_yz tot_I_zz;];
disp(I);
fprintf('Principal Inertia Matrix:-\n'); [V,D] = eig(I); disp(V); disp(D);
B = [I(2,1) I(1,1); -I(2,2) -I(1,2);]; prompt = 'Enter Value of My:-'; My = input(prompt); prompt = 'Enter Value of Mz:-'; Mz = input(prompt);
M = [My ; Mz;];
C = (1/det(I)).*B*M*10^-2;
disp(C); syms y z; sigmaXX = -((y)*C(1)*10^-2 + (z)*C(2)*10^-2); sigmaXX = eval(sigmaXX); fprintf('Value of SigmaaXX:-\n'); disp(sigmaXX); fprintf('Do You want to find sigmaaXX at any Particular Value of (Y,Z)??[Y/N]\n'); prompt = '[Y/N]:-'; check = input(prompt);
if(check == Y) prompt = 'Enter Value for y:-'; y_test = input(prompt); prompt ='Enter Value for z:-'; z_test = input(prompt);
y= y_test-y_center;
z = z_test-z_center;
sigmaXX_test = subs(sigmaXX);
sigmaXX_test = eval(sigmaXX_test);
fprintf('Value for SigmaXX:-');
disp(sigmaXX_test);
syms y z;
else
pause;
end
Image Analyst
2016-10-15
Vasanth Kumar
2018-3-15
dear sir, please attach a file 'yzdata.txt'
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Creating, Deleting, and Querying Graphics Objects 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!