你可以在Matlab中的列表/单元格中创建一个数字吗?

时间:2013-07-01 15:03:45

标签: matlab

基本上,我可以说我有一个随机数列表:x = {3,5,6,7,8,11,13,14,16,22,25} 我想循环遍历这些数字,但我希望我的索引实际上是每个数字。所以如果我做了:

for i = x{1} : x{length(x)}

    disp(i);

我希望我的i3,然后5,然后6781113等...... 基本上我想要下一个数字和当前数字之间的差异,并且这是我的一步。

3 个答案:

答案 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

之前已经介绍过了。我现在要离开我的答案,以防你在开头想要矢量内容。