注册
登录
matlab
MATLAB中有foreach吗?如果是这样,如果基础数据发生变化,它将如何表现?
返回
MATLAB中有foreach吗?如果是这样,如果基础数据发生变化,它将如何表现?
作者:
狗头军师
发布时间:
2024-02-14 06:35:06 (1月前)
MATLAB中是否有foreach结构?如果是这样,如果基础数据发生变化(即将对象添加到集合中),会发生什么?
收藏
举报
2 条回复
1#
回复此人
v-star*위위
|
2020-07-23 17-32
MATLAB的FOR循环本质上是静态的;与其他语言中的for(initialization; condition; increment)循环结构不同,您无法在迭代之间修改循环变量。这意味着无论B的值如何,以下代码始终打印1、2、3、4、5。 A = 1:5; for i = A A = B; disp(i); end 如果您希望能够在迭代过程中响应数据结构的变化,那么WHILE循环可能更合适---您将能够在每次迭代时测试循环条件,并设置循环变量的值( s)如您所愿: n = 10; f = n; while n > 1 n = n-1; f = f*n; end disp(['n! = ' num2str(f)]) 顺便说一句,在迭代过程中修改数据结构时,Java(以及其他语言)中的for-each循环会产生未指定的行为。如果需要修改数据结构,则应使用适当的Iterator实例,该实例允许添加和删除要迭代的集合中的元素。好消息是MATLAB支持Java对象,因此您可以执行以下操作: A = java.util.ArrayList(); A.add(1); A.add(2); A.add(3); A.add(4); A.add(5); itr = A.listIterator(); while itr.hasNext() k = itr.next(); disp(k); % modify data structure while iterating itr.remove(); itr.add(k); end
编辑
登录
后才能参与评论