Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3359006
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 18, 20262026-05-18T02:49:12+00:00 2026-05-18T02:49:12+00:00

I have a line of code in Matlab that reads: output = find(input); where

  • 0

I have a line of code in Matlab that reads:

  output = find(input);

where column vector “output” contains all indices in column vector “input” whose elements are nonzero. For example, if:

 input = [1 3 4 0 0 2 0];

then the result of, output = find(input); would be:

 output = 
     1
     2
     3
     6

corresponding to the 1st (“1”), 2nd (“3”), 3rd (“4”), and 6th (“2”) indices of array “input” that are nonzero.

Since my “input” array is very large, this line of code consumes all of my local RAM plus a huge portion of virtual memory, causing the system to slow to a crawl.

Anyone know of a good way (or any way) to reduce the memory requirements of such an operation? I thought about putting the “find” code in a loop, but since the size of array “output” (and thus indexing of this array) depends on the result of the “find” operation, I don’t see how it’s possible to do so. Ran out of ideas.

Thanks in advance for any comments/suggestions. -gkk

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-18T02:49:13+00:00Added an answer on May 18, 2026 at 2:49 am

    If you have enough RAM to hold an array the same size of input, you can replace the call to find by

    output = 1:length(input);
    output = output(input~=0);
    

    If input has less than 2^32-1 elements, you can initialize it as uint32, and thus further save on memory.

    A better way might be to convert your input array to sparse, which saves memory if input contains lots of zeros, and then use find on that, i.e.

    input = sparse(input);
    output = find(input);
    

    EDIT

    To perform the find operation in pieces, I’d do the following:

    nIn = length(input);
    blockLength = 100000;
    nBlocks = ceil(nIn/blockLength); %# work in chunks of 100k entries
    out = cell(nBlocks,1);
    for i=1:nBlocks
       out{i} = (i-1)*blockLength+1:i*blockLength; %# assign as your favorite integer format here
       out{i} = out{i}(input(out{i})~=0);
    end
    out = cat(1,out{:});
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have this line of code for page load: if ($(input).is(':checked')) { and it
I have a line of C# in my ASP.NET code behind that looks like
I have a unit test which contains the following line of code Site.objects.get(name=UnitTest).delete() and
I have this line of code in MATLAB, written by someone else: c=a.'/b I
I have recently learned, that in MATLAB, the ! mark runs the code in
I have a line of code in JavaScript, using prototype, that is run several
I have a line of Fortran code, which includes some text. I'm changing the
I have the following line of code in a link on my webpage: <a
If you have a particular line of C code in mind to examine in
I have a greasemonkey user script with this single line of code... window.close(); but

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.