The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: very large array
Replies: 18   Last Post: Jun 26, 2013 2:53 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Lorenzo Quadri

Posts: 8
Registered: 6/24/13
Re: very large array
Posted: Jun 24, 2013 11:02 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Steven_Lord" <> wrote in message
> Not only will this be slow, it will also error. If you have a 10 row array:
> xv = (1:10).';
> X = [xv, xv.^2]
> size(X)
> and you delete one row, you now have a 9 row array:
> X(3, :) = []
> size(X)
> In your code, length(dati) is NOT evaluated each time the loop body executes
> but is fixed when the loop STARTS executing. Thus you'd walk off the end of
> the array if any of the rows are deleted.
> So you want to eliminate rows whose sum is less than 355 and whose maximum
> and minimum elements are more than 20 apart? Use logical indexing on the
> whole array at once rather than row-by-row. Compute along the rows by
> specifying a dimension input argument to SUM and RANGE.
> rowsums = sum(dati, 2, 'double');
> rowranges = range(dati, 2);
> dati(rowsums < 355 & rowranges > 20, :) = [];
> While you could do this all on one line, I broke the two conditions out so
> you could experiment with a smaller dati to prove to yourself that it works
> and that you understand what the code is doing.
> --
> Steve Lord
> To contact Technical Support use the Contact Us link on

Yes, thank you, your comment is right,
I replaced the for loop with a while one


while (a>0)
if((sum(dati(i,:))<355) & range(dati(i,:))>20)
a = a - 1;
dati(i,:) = [];

I'll try evaluate it with logical indexing as you suggested.
Copy the array in an other one take about 1,5 hrs every 1000000 iterations
so the whole operation is exstimated in about 300 hrs or 12,5 days (too much, conditions change meanwhile).

thank you very much

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.