Calculation of Deflection of Gradient Pile Using Deflection Equation
5 views (last 30 days)
Show older comments
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
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.
Answers (1)
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:
0 Comments
See Also
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!