matlab高维搜索,matlab 查找高维数据(5-D double)中有没有类似Unique的函数能找到比如最大值数据的位置...

满意答案

A = randi([1,1000],[2,3,5]); % 实验数据

%

N = 5;  % 查找前N个大数的位置

[m,n,p] = size(A);

B = unique(A(:));

fb = sort(B(end-N+1:end),'descend');

for k = 1:N

b = [];

for h = 1:N

a = find(A(:,:,h)==fb(k));

if ~isempty(a), b = [b a]; end

end

if ~isempty(b)

% 绝对位置

r{k} = b;

% 转换为相对位置 [行数 列数 维数] 形式

rp = [fix((b-1)/m)+1]';

cp = [mod((b-1),m)+1]';

pp = repmat(k,length(b),1);

rr{k} = [rp cp pp];

end

end追问: 我验算了一下好像不对诶(我觉得h应该是1:p,改了以后结果还是不对)

rp出现了大于m的情况(等于3),而且在不超过的结果里,对应的数也不对

追答:123456789101112131415161718192021222324252627% 你是对的,应该是 1:p;同时结果中行与列搞反了% 考虑到有相同数据,增加了 tp 变量(记录可能不同的维数) A = randi([1,1000],[2,3,5])  % 实验数据% N = 5;  % 查找前N个大数的位置[m,n,p] = size(A);B = unique(A(:));fb = sort(B(end-N+1:end),'descend');for k = 1:N    b = [];    tp = [];    for h = 1:p        a = find(A(:,:,h)==fb(k));        if ~isempty(a)            b = [b a];             tp = [tp h];         end    end    if ~isempty(b)        % 转换为相对位置 [行数 列数 维数] 形式        rp = [mod((b-1),m)+1]';        cp = [fix((b-1)/m)+1]';        pp = tp';        rr{k} = [rp cp pp];        endendcelldisp(rr);

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值