Calculation of Deflection of Gradient Pile Using Deflection Equation
5 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Rahul
2024 年 10 月 18 日
Hi @紹臺, can you explain what you're trying to achieve and the issues that you are facing using the given function.
回答 (1 件)
Rahul
2024 年 10 月 21 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Dynamic System Models についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!