Matlab 自动生成字典

Matlab 自动生成字典,matlab,Matlab,我想做的是让Matlab生成一个值列表,从0开始,一直到数组的大小,这样当值出现时,它就会转换成这个值列表 例如: -0.7500-0.5000-0.2500 0.2500 0.5000 0.7500 1.0000 我希望这能产生: 01 2 3 4 5 6 7 因此,当我输入值-0.75时,它会将其转换为0,依此类推。我看到我的老师使用了一个Matlab函数,它可以自动完成这项工作,但不幸的是,他没有提供函数的名称(只是说它存在)。如果没有人知道这个函数,我就写我的函数,但我更喜欢Matlab

我想做的是让Matlab生成一个值列表,从0开始,一直到数组的大小,这样当值出现时,它就会转换成这个值列表

例如:

-0.7500-0.5000-0.2500 0.2500 0.5000 0.7500 1.0000

我希望这能产生:

01 2 3 4 5 6 7

因此,当我输入值-0.75时,它会将其转换为0,依此类推。我看到我的老师使用了一个Matlab函数,它可以自动完成这项工作,但不幸的是,他没有提供函数的名称(只是说它存在)。如果没有人知道这个函数,我就写我的函数,但我更喜欢Matlab开发人员编写的函数。

 x = [-0.7500 -0.5000 -0.2500 0 0.2500 0.5000 0.7500 1.0000];
 value = -.75;
你可以用

 find(value==x)-1 %// -1 needed because Matlab indexing starts at 1, not 0

不过要当心。您可能希望包含一个公差:

tol = 1e-6; %// relative tolerance
find(abs(value./x-1)<tol)-1

然后,
dict(-.75)
返回
0
,等等。

虽然我已经这样实现了它,但我还是希望在Matlab中有一个函数能够自动完成这项工作,谢谢你。在我看来,
find
ismember
的使用是相当自动的。您正在调用这些函数,并且不需要太多,也许您需要一个。在这里,这似乎不是最合适的选择,尽管我更愿意采用带有容差的
find
方法
tol = 1e-6; %// relative tolerance
find(abs(value./x-1)<tol)-1
x = [-0.7500 -0.5000 -0.2500 0 0.2500 0.5000 0.7500 1.0000];
y = 0:numel(x)-1;
dict = containers.Map(x, y);