我将在 EXCEL 或 MATLAB 中将数组作为 [1 2 6 12 13 15 20 8 30 31] 转换为范围 [1 2 3 4 5 6 7 8 9 10]。有什么功能可以做到吗?有什么建议可以将这种任意范围转换为确定范围吗?
问问题
298 次
2 回答
0
MATLAB 解决方案
在 MATLAB 中,unique
可以做到这一点。例如:
A = [1 1 1 1 4 4 5 3 3 6 6 6 6 8]
[C, ia, ic] = unique(A);
现在ic
保存您正在寻找的值:
ic =
1 1 1 1 3 3 4 2 2 5 5 5 5 6
ic
此外,如果您愿意,您可以重新映射到新订单。例如,这是一个类似于您建议的新订单:
new_order = [1 3 2 4 6 5];
ic_new = new_order(ic);
产生:
ic_new =
1 1 1 1 2 2 4 3 3 6 6 6 6 5
希望有帮助!
于 2012-10-31T09:03:44.663 回答
0
在 Matlab 中:
v = [1 2 6 12 13 15 20 8 30 31];
v_index = 1:length(v);
于 2012-10-30T23:52:04.243 回答