小编355*_*113的帖子

MATLAB的factor()函数背后会发生什么?

主要是,为什么这么快(对于大数字)?该文档仅告诉我如何使用它.例如,它需要最多一秒才能找到最大的素数因子1234567890987654,对我而言,这似乎是疯狂的.

>>max(factor(1234567890987654))

ans =

    69444443
Run Code Online (Sandbox Code Playgroud)

matlab primes factorization

2
推荐指数
1
解决办法
221
查看次数

MATLAB相当于Python的负索引

问题:根据布尔值smth,数组a必须向前或向后迭代.由于递归,必须事先处理第一个(或最后一个)元素.

在Python中,我可以通过稍微调整索引(*)来影响数组迭代的方向:

a=range(2,11,2)

sign=1
os=0

if smth:                
    sign=-1
    os=1

print(a[sign*os])          #*
for k in range(5):
    print(a[sign*(k+os)])  #*
Run Code Online (Sandbox Code Playgroud)

现在,由于MATLAB中没有负面索引,我无法找到将指令加倍的方法(简单地说是上面的"打印")并调整索引:

a=2:2:10

if smth
    a(1)
    for i=2:5
        a(i)
    end   
else
    a(end)
    for i=4:-1:1
        a(i)
    end
end
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,最终类似于上面的Python代码?实际指令将更长,包括多维索引的组合.

此外,在这种情况下,smth不可能在评估之后翻转阵列.

python arrays indexing matlab

2
推荐指数
1
解决办法
488
查看次数

标签 统计

matlab ×2

arrays ×1

factorization ×1

indexing ×1

primes ×1

python ×1