参考链接:
Matlab中保持原来数值顺序的unique函数实现https://raocong.blog.csdn.net/article/details/6861576
function uniVecUnsorted = unique_unsorted(vector)
digits(5); %控制数据精度
uniValues = vpa(unique(vector)); %注意vpa的位置,放在其他地方会导致uniValues的值按科学计数法显示
mask = zeros( size(vector, 1), size(vector, 2));
for i = 1 : length(uniValues(i));
maskValue = (vector == uniValues(i)); %将值相同元素的位置上的flag置为1
indFirst = find(vector == uniValues(i), 1, 'first'); %找到第一个值相同元素所在的位置
maskValue(indFirst + 1 : end) = 0; %将其他值相同元素的位置上的flag值置为0
mask = mask | maskValue;
end
uniVecUnsorted = vector(mask);
end
function output = IntDCT8
digits(5);
origin_DCT = vpa(DCTMTX(8))
b = vpa (unique_unsorted(abs(origin_DCT)) %注意vpa的位置,放在其他地方会导致uniValues的值按科学计数法显示
end
调用方法:
在command window输入“IntDCT8”.
输出结果:
b =
.35355
.49039
.41573
.27779
.97545e-1
.46194
.19134