在MATLAB中是否存在指针或引用?

时间:2012-12-04 04:40:06

标签: matlab

我正在尝试优化这段代码。这是简化版(不是实际代码)。

for i = 1:1000000
  a(i).x = a(i).x+1;
  a(i).y = a(i).y*2;
  a(i).f = i:i+128;
end

我知道如果一个人的速度更快,我是否会尊重(i)。如下所示:

for i = 1:1000000
  b = a(i);
  b.x = b.x+1;
  b.y = b.y*2;
  b.f = i:i+128;
  a(i) = b;
end

这里我将a(i)复制到b并最后复制到(i)。是否可以只定义指向(i)的指针?类似于C ++的东西。

1 个答案:

答案 0 :(得分:1)

MATLAB的handle数据类型与其他语言的引用类似,但我认为这不合适。

我建议的主要优化是使用大型数组的结构,而不是大量的结构。换句话说,您的代码可能看起来更像这样:

for i = ...
    a.x(i) = a.x(i) + 1;
    ...
end

这种方法通常更快,内存效率更高。