自己编写的 matlab 线性索引转换下标 函数

matlab自带的线性索引转换下标函数必须指定下标个数,也就是数据的维度。这在实际应用中受到了限制。

(什么是线性索引,什么是下标,不再介绍,相信你如果搜到了本贴,必然知道这两个概念)


% 原函数:

% 原函数可以直接拷贝到matlab中,生成m函数使用。


% 重写一个由线性索引查找下标的函数,适合多维,输出数组代表下标
% matlab 自带输出结果必须指定下标个数,此处无需指定
function subarray = myind2sub(datasize, ind)
% input:     datasize    数据尺寸
%             ind         数据线性索引 整数
% output:     subarray    数组形式的下标索引
% suozi   2016.05.17 HIT
% 379786867  buaasuozi@126.com
% ind 判断
if ind ~= fix(ind)
    disp('输入的索引必须为整数')
    return
end

subarray = zeros(size(datasize));
rest = ind;
i=length(datasize);
while i > 0
    if i ~= 1
       tmpdivide = rest/prod(datasize(1:i-1));
        if tmpdivide == fix(tmpdivide) % 余数为0 
            subarray(i) = tmpdivide;
        else
            subarray(i) = floor(tmpdivide) + 1;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值