0
基本的には、特定の値を削除し、セルのセル内に他の値を保持するという問題があります。条件付きループを使用してセルの内容の値をフィルタリングする
私は距離と呼ばれるセルを作成し、2つの基準 "blockade and blockadeouter"に基づいて値を除外します。距離セルの最初のセルが空のまま残っているので、私はそうすることができませんが、より重要なのは、距離セルにとどまっている特定の範囲外の値が表示されているという意味でフィルタリングが機能していないことです。
rangeプロパティで満たす距離の座標xinit、yinit、zinitを格納し、これらの座標をposx、posy、poszに格納します。
私が作っている間違いをよく知りません。すべての助けを歓迎します。
おかげ
kb = 1.38065*10^(-23) ; %Boltzmann Constant
amu = 1.660539040*10^-27; % atomic mass unit
mRb= 85;%mass of Rubidium 85
c = 299792458; % speed of light
e=1.6021892*10^-19;%electron unit charge
epsilon0 = 8.854 * 10^-12;
%=============Minimum Allowable Distance/Blockade Radius=====================
a = 12.8*10^-6;
blockade =14*10^-6;%lower limit for filtering
blockadeouter = blockade + a;%upper limit for filtering
sigmax = 40;
sigmay = 40;
sigmaz = 0;
%==================Number of Scan Steps====================================
npics =50; %number of iterations
%=============Number of initial particles in the excitation volume in the MOT Stage===================
numberofparticles =100;
%=============Creating a cell system for importing GPT Data into===========
distances = cell(npics,1);%Collecting all distances between particles
posx = cell(npics,1);
posy = cell(npics,1);
posz = cell(npics,1);
for n = 1 : 1 : npics
fprintf('%d ',n);
%Declaration of orgin for simulation
mux = 0; muy = 0; muz =0;
%Creating a x,y,z coordinate system for the ion
xinit = normrnd(mux,sigmax*10^-6,[1 numberofparticles]);
yinit = normrnd(muy,sigmay*10^-6,[1 numberofparticles]);
zinit = normrnd(muz,sigmaz*10^-6,[1 numberofparticles]);
for ii = 1 : 1 : numberofparticles
for jj = ii+1 : 1 : numberofparticles
distances{ii}{jj} = sqrt((xinit(ii) - xinit(jj)).^2 + (yinit(ii) - yinit(jj)).^2 + (zinit(ii) - zinit(jj)).^2);
if (distances{ii}{jj} >= blockade) && (distances{ii}{jj} <= blockadeouter)
posx{n}{jj} = xinit(jj);
posy{n}{jj} = yinit(jj);
posz{n}{jj} = 0;
end
end
end
end % end of npics loop
figure
for ii = 1:1:length(distances)
trial{ii} = cell2mat(distances{ii,1}(1,:));
end
trial = cell2mat(trial);
grid on;
title('Filtered Distances')
hist(trial)
ではなく、セル配列に苦しんで通常の2-d数値配列を使用せず、NaNを使って欠けているデータ(以前は空の[]配列を使用していた場所)を示すのはなぜですか?例えば。 '距離= NaN(npics、numberofparticles);'のようなものを初期化し、 'posx'、' posy'、 'posz'に対して' distance(ii、jj)= ... 'を使います。 – Justin