How to store data of FOR LOOP iteration?

1 回表示 (過去 30 日間)
Nima
Nima 2020 年 10 月 27 日
コメント済み: Sudhakar Shinde 2020 年 10 月 27 日
In the following code i want all the data of each iteration to be stored in P_new, and also B_xq, B_xq , B_xq repectively, but what i get is only the last one. What needs to be changed in my code?
k = convhull(data_coord);
for i = 1:length(k)
v1_x = x_data(k(i,1));
v1_y = y_data(k(i,1));
v1_z = z_data(k(i,1));
v2_x = x_data(k(i,2));
v2_y = y_data(k(i,2));
v2_z = z_data(k(i,2));
v3_x = x_data(k(i,3));
v3_y = y_data(k(i,3));
v3_z = z_data(k(i,3));
p1 = [v1_x v1_y v1_z];
p2 = [v2_x v2_y v2_z];
p3 = [v3_x v3_y v3_z];
ps = [p1; p2; p3];
p12 = p2-p1;
p23 = p3-p2;
P = [p12; p23];
q = sqrt(rand(5, 1));
q = [q q.*rand(5, 1)];
P_new = q*P+p1;
F_Bx = scatteredInterpolant(data_coord, B_x,'nearest');
B_xq = F_Bx(P_new(:,1),P_new(:,2),P_new(:,3));
F_By = scatteredInterpolant(data_coord, B_y,'nearest');
B_yq = F_By(P_new(:,1),P_new(:,2),P_new(:,3));
F_Bz = scatteredInterpolant(data_coord, B_z,'nearest');
B_zq = F_Bz(P_new(:,1),P_new(:,2),P_new(:,3));
end

採用された回答

Sudhakar Shinde
Sudhakar Shinde 2020 年 10 月 27 日
You can use P_new(i) or P_new{i} to store loop result.
  6 件のコメント
Nima
Nima 2020 年 10 月 27 日
data = csvread('20points3D.csv',5,0);
B_x = transpose(data([61:80]));
B_y = transpose(data([81:100]));
B_z = transpose(data([101:120]));
x_data = transpose(data([1:20]));
y_data = transpose(data([21:40]));
z_data = transpose(data([41:60]));
data_coord = [x_data,y_data,z_data];
Sudhakar Shinde
Sudhakar Shinde 2020 年 10 月 27 日
P_new is required for calculations, so use below syntax to store outcomes:
B_xq(:,i)
B_yq(:,i)
B_zq(:,i)
As above final outcome is your area of interest P_new need not to be saved in loop and use as it is written now.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by