gpt4 book ai didi

matlab - 是否可以避免在元胞数组上迭代时出现 "s{1} annoyance"?

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:13 24 4
gpt4 key购买 nike

标题中的“s{1} annoyance”指的是下面 for block 中的第一行:

for s = some_cell_array
s = s{1}; % unpeel the enclosing cell
% do stuff with s
end

这个 s = s{1} 业务是必要的,因为 some_cell_array 的迭代并没有真正迭代 some_cell_array 的内容,但是而不是超过 1 个元素的 cells,每个元素都包含来自 some_cell_array 的项目。

抛开谁可能希望将此行为作为默认的问题,是否有任何方法可以迭代 bare 的内容some_cell_array?

最佳答案

我认为在一般情况下没有办法避免这个问题。但是,如果您的元胞数组包含所有数字或所有字符,则有一种方法。您可以转换为数组并让 for 循环对其进行迭代。

例如,这个:

some_cell_array = {1,2,3}
for s = [some_cell_array{:}] % convert to array
s
end

给予:

s =
1
s =
2
s =
3

另一种选择是创建一个对数组的每个单元格进行操作的函数。然后你可以简单地调用cellfun并且根本没有循环。

我不知道谁会想要这种行为或者它如何有用。然而,我猜测它为何以这种方式工作,这是一个实现问题。这样循环迭代器就不会在不同的迭代中改变类型。每次都是一个单元格,即使该单元格的内容是不同的类型。

关于matlab - 是否可以避免在元胞数组上迭代时出现 "s{1} annoyance"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16587564/

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