基本上,我可以说我有一个随机数列表:x = {3,5,6,7,8,11,13,14,16,22,25}
我想循环遍历这些数字,但我希望我的索引实际上是每个数字。所以如果我做了:
for i = x{1} : x{length(x)}
disp(i);
我希望我的i
为3
,然后5
,然后6
,7
,8
,11
,13
等......
基本上我想要下一个数字和当前数字之间的差异,并且这是我的一步。
答案 0 :(得分:2)
由于您的列表位于单元格中,因此可以使用
for idx = cell2mat(x)
disp(idx)
end
答案 1 :(得分:0)
我不确定你在寻找的是否存在于matlab中。我会这样做:
for j = 1:x{size(x,2)}
disp(x{j}); % or any other processing,
% % you can also set i=x{j} and do what you wanted to do with i.
end
答案 2 :(得分:-1)
对于向量x
,如果要创建新向量result
,则ith
的{{1}}元素是result
元素{ {1}},然后你可以使用:
x(i)th
这相当于:
x
但它应该快得多。这可能有助于矢量化代码并使其运行更快。如果你需要循环遍历元素(并且最好尽可能避免MATLAB中的循环),你可以使用:
result = x(x);
这有点令人费解,但有效。
警告:您必须确保result = zeros(length(x));
for i = 1:numel(x)
index = x(i);
result(i) = x(index);
end
的任何元素都不超过for i = 1:numel(x)
disp(x(x(i)))
end
的尺寸,否则您将收到错误消息。此外,x
的每个元素都必须是整数。
编辑:以上方法适用于矢量,这是我最初解释您的问题的方法。对于单元阵列,看起来您的选项有点受限。我没有找到比使用更快的方法:
x
之前已经介绍过了。我现在要离开我的答案,以防你在开头想要矢量内容。