gpt4 book ai didi

Python 到 Matlab 的转换?

转载 作者:行者123 更新时间:2023-11-30 22:51:47 26 4
gpt4 key购买 nike

我在下面有这个Python代码(用于冒泡排序)。下面是我将其转换为 MATLAB 代码的尝试。我是 MATLAB 新手,我正在进行转换以进行练习。我希望收到有关我的转换准确/不正确程度的反馈。

Python 版本:

def bubble_sort(alist):
return bubble_sort_helper(alist, len(alist))
def bubble_sort_helper(alist, n):
if n < 2:
return alist
for i in range(len(alist)-1):
if alist[i] > alist[i+1]:
temp = alist[i]
alist[i] = alist[i+1]
alist[i+1] = temp
return bubble_sort_helper(alist, n-1)

我尝试进行 MATLAB 转换:

function a = bubble_sort(alist)
a = bubble_sort_helper(alist, size(alist))
end

function b = bubble_sort_helper(alist, n)
if n < 2
b = alist
end
for ii = size(alist)
if alist(1) > alist (ii+1)
temp = alist(ii)
alist(ii) = alist(ii+1)
alist(ii+1) = temp
end
end
b = bubble_sort_helper(alistn n-1)

end

最佳答案

这里有几个问题:

  1. 您需要使用 numel 而不是 size 来获取数组中的元素数量。 size 将为您提供每个维度大小的向量,numel 将为您提供元素总数

  2. 您需要实际创建一个值数组,以便 for 循环进行循环。为此,请使用冒号创建一个从 2n 的数组。

    for ii = 2:n
    end
  3. 您使用 ii 作为循环变量,但尝试在循环内部使用 i。选择一个并坚持下去(最好不是i)

  4. 要翻转值,您可以简单地执行分配,如下所示:

    alist([i-1, i]) = alist([i, i-1]);

综合起来,这会给你这样的东西:

function a = bubble_sort(alist)
a = bubble_sort_helper(alist, numel(alist))
end

function b = bubble_sort_helper(alist, n)
if n < 2
b = alist;
else
for k = 2:n
if alist(k-1) > alist(k)
alist([k-1, k]) = alist([k, k-1]);
end
end
b = bubble_sort_helper(alist, n-1);
end
end

关于Python 到 Matlab 的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38904366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com