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 自动生成字典,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);