フィルターのクリア

Partitioning and removing an array of data

1 回表示 (過去 30 日間)
Ronak
Ronak 2021 年 10 月 27 日
回答済み: Ishu 2024 年 3 月 27 日
Hi. Can you please explain what is it doing here (Bold lines)? As far as I know it must remove gridpoints from thegrid and partitions gridpoints with a probability (prob). But I don't understand how it is doing the removing and patirioning.
for j=1:L
gridpoints=[gridpoints,thegrid{j}.coordinate];
npoints=length(thegrid{j}.points);
directions_numeric=sign(X_data(:,thegrid{j}.points)-thegrid{j}.coordinate*ones(1,npoints));
directions=num2cell(num2str(directions_numeric'),2);
numericmap=containers.Map(directions,num2cell(directions_numeric,1));
cubemap=containers.Map(directions,cell(npoints,1));
for i=1:npoints
cubemap(directions{i})=[cubemap(directions{i}),i];
end;
keyset=keys(cubemap);
valset=values(cubemap);
for i=1:length(cubemap)
activesize=length(valset{i});
if(activesize>gamma)
prob=1-0.5*exp(-epss*(activesize-gamma));
else
prob=0.5*exp(epss*(activesize-gamma));
end;
if(random('bino',1,prob)>0.5)
tempobj.coordinate=thegrid{j}.coordinate+side_length/2*numericmap(keyset{i});
tempobj.points=valset{i};
newgrid=[newgrid,tempobj];
end;
end;

回答 (1 件)

Ishu
Ishu 2024 年 3 月 27 日
Hi Ronak,
Here you are dealing with a struct "thegrid{1}" which has two fields "coordinate" and "points". In the loop you are iterating over a list of grid cells "thegrid' of lenght "L".
For each cell it extracts the cell's central coordinate and the indices of data points associated with this cell. Then it calculates the direction of each point relative to the cell's center, storing it in a matrix "directions_numeric" where each column represents the direction of a point relative to the center.
Next, the code converts the numeric directions to strings "directions" and then to cell arrays, which are used as keys in two maps "numericmap" and "cubemap". The "numericmap" associates each direction with its numeric representation. The "cubemap" is intended to group points by their direction relative to the cell's center.
In last, it iterates over all points, appending the index of each point to the appropriate entry in "cubemap" based on its direction.
For more information on how the data is stores in "structs" you can refer below documentation:
Hope it helps.

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by