Calculation of Deflection of Gradient Pile Using Deflection Equation
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
function value = Kstiff_function(ii, interval, ksi, count, EI)
value = zeros(1, count);
% 节点的局部刚度矩阵定义
if (ii == 1)
value(1, 1) = -1 * EI(ii,1) / interval^3;
value(1, 2) = 3 * EI(ii,1) / interval^3;
value(1, 3) = -3 * EI(ii,1) / interval^3;
value(1, 4) = 1 * EI(ii,1) / interval^3;
elseif (ii == 2)
value(1, 1) = 1 * EI(1,1);
value(1, 2) = -2 * EI(2,1);
value(1, 3) = 1 * EI(3,1);
elseif (ii >= 3) && (ii <= 100)
value(1, ii - 2:ii + 2) = [1*EI(ii), -4*EI(ii), ...
6*EI(ii) + ksi(ii,1)*interval^4, -4*EI(ii), ...
1*EI(ii)];
elseif ii == 101
value(1, ii - 2:ii + 2) = [1*EI(ii), -4*EI(ii), ...
(6*EI(ii) + ksi(ii,1)*interval^4 + 6*EI(ii+1) + ksi(ii + 1,1)*interval^4)/2, -4*EI(ii + 1), ...
1*EI(ii + 1)];
elseif (ii >= 102) && (ii <= count-2)
value(1, ii - 2:ii + 2) = [1*EI(ii), -4*EI(ii), ...
6*EI(ii) + ksi(ii,1)*interval^4, -4*EI(ii), ...
1*EI(ii)];
elseif (ii == count-1)
value(1, count-2:count) = [1*EI(count-2,1), ...
-2*EI(count-1,1), ...
1*EI(count,1)];
elseif (ii == count)
value(1, count-3:count) = [1*EI(count-3,1), ...
-3*EI(count-1,1), ...
3*EI(count-2,1), ...
-1*EI(count,1)];
end
end
1 commentaire
Rahul
le 18 Oct 2024
Hi @紹臺, can you explain what you're trying to achieve and the issues that you are facing using the given function.
Réponses (1)
Rahul
le 21 Oct 2024
Hi Praful,
I believe you are using a MATLAB function to calculate Deflection of Gradient Pile Using Deflection Equation. Here a few improvements you can consider accommodating in your given code snippet, according to your use-case:
- Matrix Indexing with ‘EI’: There is a usage of ‘EI(ii,1)’ for accessing the stiffness matrix, but in other places (for ii >= 3), ‘EI(ii)’ is being used without specifying the second dimension. You can ensure that ‘EI’ is either a vector or a 2D matrix. If ‘EI’ is a 2D matrix, you can use ‘EI(ii, 1)’ consistently, otherwise, use ‘EI(ii)’ for a vector.
value(1, ii - 2:ii + 2) = [1*EI(ii), -4*EI(ii), 6*EI(ii) + ksi(ii,1)*interval^4, ...];
- Indexing of ‘value’ Matrix: Accessing parts of ‘value(1, ...)’ might end up accessing indices out of bounds, since MATLAB uses 1-based indexing, and also while using ‘ii - 2:ii + 2’, especially for small values of ‘ii’. For example, when ‘ii’ = 1 or ‘ii’ = 2, ‘ii – 2’ becomes zero or negative, which would lead to errors. Ensuring that these ranges are properly bounded can avoid index out-of-bounds errors.
value(1, ii - 2:ii + 2) = [1*EI(ii), -4*EI(ii), ...];
- Inconsistent Access to ‘ksi’ Matrix: Similar to ‘EI’, inconsistency in using ‘ksi(ii, 1)’ (assuming ‘ksi’ is a matrix) and sometimes just ‘ksi(ii)’, could lead to errors depending on how the ‘ksi’ variable is structured:
6*EI(ii) + ksi(ii,1)*interval^4
- Dimension Mismatch in Assignments: For example, in the following part, while assigning a 3-element vector to a portion of the value array:
value(1, count-2:count) = [1*EI(count-2,1), -2*EI(count-1,1), 1*EI(count,1)];
For more information regarding usage of matrices and arrays in MATLAB, refer to the documentation links mentioned below:
0 commentaires
Voir également
Catégories
En savoir plus sur Dynamic System Models dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!