Efficiency help 2

1 回表示 (過去 30 日間)
Andy
Andy 2011 年 12 月 7 日
for q = 1:length(maxtab2)
for r = 1: length(maxtab2{q})
for s = 1: length(replacewith)
if abs (maxtab2{q}(r) - replacewith(s)) ==1
maxtab2{q}(r) = replacewith(s);
end
end
end
end
maxtab2 is a list of cells, each containing 2 colums of numbers(up to 20 numbers each column).
length(maxtab2)=190 length(maxtab2{q}) would be up to 20
can anyone help me make the 3 loops more effecient please? It is taking way too long right now, Thanks!
here is the data for maxtab2, its just the content of 1 cell
{[705;4000]}
replacewith is a list of over 5000 variables. the code here chooses one of these 5000 variable and replace the corresponding maxtab2 (determined by the for loops) with the chosen variable from replacewith
  2 件のコメント
Sean de Wolski
Sean de Wolski 2011 年 12 月 7 日
I agree with Sven. Why?
"Because the mathematician knew it was a good idea."

サインインしてコメントする。

採用された回答

Sean de Wolski
Sean de Wolski 2011 年 12 月 7 日
for s
if abs (maxtab2{q}(r) - replacewith(s)) ==1
maxtab2{q}(r) = replacewith(s);
end
end
I'm pretty sure this can be replaced with
maxtab{q}(r) = find(abs(maxtab{q}(r)-replacewith)==1,1,'last')
but this operation seems wierd to me. You're going to replace it with the value one less than it or one more than it, you're aware of this right?
  9 件のコメント
Andy
Andy 2011 年 12 月 7 日
i ended up using this: works well
for q=1:length(maxtab2)
for r = 1:length(maxtab2{q})
finding = abs(maxtab2{q}(r) - replacewith(1:length(replacewith)));
if ismember (1,finding)==1
maxtab2{q}(r)=replacewith(find(finding==1,1,'last'));
end
end
end

サインインしてコメントする。

その他の回答 (1 件)

Jerry
Jerry 2011 年 12 月 7 日
If this maxtab2 can be stored in a matrix. This whole thing can be done without iteration. But if it's a cell, I think it's pretty hard to speed it up since a lot of operations cannot be applied to cell, like "-"(minus), and "find".
  1 件のコメント
Andy
Andy 2011 年 12 月 7 日
maxtab2 is a list of cells, and each cell contains two colums, one columns is x-axis coordinate, the other is y-axis coordinate

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by