MATLAB中是否存在指针或引用?
我正在尝试优化这段代码。这是简化版本(不是实际代码) 我知道如果我尊重a(I),它会更快。例如: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> >数据类型,与其他语言中的引用相似,但我认为这不合适。 这里我建议的
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