Calculation of Deflection of Gradient Pile Using Deflection Equation

5 views (last 30 days)
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 Comment
Rahul
Rahul on 18 Oct 2024
Hi @紹臺, can you explain what you're trying to achieve and the issues that you are facing using the given function.

Sign in to comment.

Answers (1)

Rahul
Rahul on 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:

Categories

Find more on Dynamic System Models in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!