what does thegrid{1}.points=(1:n); mean?

5 次查看(过去 30 天)
Ronak
Ronak 2021-10-13
评论: Dave B 2021-10-28
Hello. I don't understand the underlined part. Can you please explain what is it doing?
thegrid=cell(1);
thegrid{1}.coordinate=zeros(p,1);
thegrid{1}.points=(1:n);
  1 个评论
Walter Roberson
Walter Roberson 2021-10-28
Could you clarify what this has to do with python (that you tagged with) ?

请先登录,再进行评论。

回答(1 个)

Dave B
Dave B 2021-10-13
编辑:Dave B 2021-10-13
Cell arrays are containers for heterogenous data, each cell can hold arbitrary types/sizes/shapes. Cells are addressed with { }
The code creates a scalar cell array called grid
In the first (and only) cell in the grid, the code implicitly creates a struct. Structs are also containers that hold heterogenous data, but instead of indexing them by rows and columns it uses named fields. thegrid{1} has two fields: coordinate and points.
Inside thegrid{1}.coordinate theres a column of p zeros
Inside thegrid{1}.points are integers between 1 and n
Hope that helps, please let me know if you have more specific questions!
  3 个评论
Ronak
Ronak 2021-10-27
编辑:Walter Roberson 2021-10-28
Hi. This is a part of the code that I wrote earlier. 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;
Dave B
Dave B 2021-10-28
there are a lot of little expressions in there, can you clarify which part is confusing? A good tip in MATLAB is: start with one set of values (i.e. get out of the loop by setting i and j to be 1). break the code out into its statements (i.e. take each function one at a time), run them in the command window with no semicolon so you can see what the output is.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Call Python from MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by