Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中是否存在指针或引用?_Matlab - Fatal编程技术网

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

MATLAB中是否存在指针或引用?,matlab,Matlab,我正在尝试优化这段代码。这是简化版本(不是实际代码) 我知道如果我尊重a(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,最后再复制到a(I)。是否可以只定义指向a(i)的指针?类似于C++的.< /p> Matlab有句柄< /C> >数据类型,与其他语言中的引用相似,但我认为这不合适。 这里我建议的

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

我知道如果我尊重a(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,最后再复制到a(I)。是否可以只定义指向a(i)的指针?类似于C++的.< /p> Matlab有<代码>句柄< /C> >数据类型,与其他语言中的引用相似,但我认为这不合适。 这里我建议的主要优化是使用大型阵列结构,而不是大型阵列结构。换句话说,您的代码可能更像这样:

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

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

或者更好的
a.x=a.x+1我同意,我创建了包含成员x、y和f的handle类只是为了看看----我使用了与Moghimi相同的代码,但删除了行
a(I)=b
,因为它已经设置了一个句柄。遗憾的是,这比原来的慢。请注意,在R2012a中,第二段代码比第一段代码慢。另外,像这样对代码进行矢量化:
nv=num2cell([a3.x]+1);[a3.x]=nv{:}也比较慢。这让我很难过。
for i = ...
    a.x(i) = a.x(i) + 1;
    ...
end