matlab中的稀疏索引
我有一个很长的代码,其中充满了以下“如果”,matlab editor给了我如下建议: 此稀疏索引表达式可能很慢matlab中的稀疏索引,matlab,signal-processing,sparse-matrix,Matlab,Signal Processing,Sparse Matrix,我有一个很长的代码,其中充满了以下“如果”,matlab editor给了我如下建议: 此稀疏索引表达式可能很慢 mt = rand(200,200); [c r] = size(mt); T = sparse(r*c,2); for i = 1:c for j = 1:r if(ind(j,i)==1) templat = template + 1; T((i-1)*r+j,2)=100000; en
mt = rand(200,200);
[c r] = size(mt);
T = sparse(r*c,2);
for i = 1:c
for j = 1:r
if(ind(j,i)==1)
templat = template + 1;
T((i-1)*r+j,2)=100000;
end
end;
end;
有什么方法可以让代码更快,并按照matlab的建议去做吗?(代码可能无法运行,因为我只选择了几行并试图显示问题)嵌套的
for
和if
相当于以下矢量化代码:
[jj, ii] = find(ind==1); %// jj is rows, ii is columns
templat = template + numel(ii);
T((ii-1)*r+jj,2) = 10000;
实际上,我必须使用嵌套for循环。你可以在这里看到代码并更正你的答案:@Sam这是一个巨大的代码!你希望我们研究整个代码吗?不,我的意思是,代码不仅仅是上面显示的简单代码。我需要使用嵌套for循环代码,因为我需要indexe@Sam“正确”我的答案在哪种意义上?怎么了?@Sam Matlab的建议是删除for循环!你的for循环和Luis的代码做完全相同的事情。也许这意味着您可以去掉代码中的所有循环!