Matlab按顺序提取DCT8x8中不重复的元素

参考链接:
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值