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 4250296
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T04:30:36+00:00 2026-05-21T04:30:36+00:00

When I do these equivalent operations in MatLab, the first runs at 24.158371 seconds

  • 0

When I do these equivalent operations in MatLab, the first runs at 24.158371 seconds (the for loop). The second runs at 0.004976 seconds (logical indexing). What could MatLab possibly be doing that makes this run so much faster? This has to still be O(n) time, right?

t = linspace(-2*pi,2*pi,100000);
fd = 1e3;
tau = 1e-6;


% Calculate arbitrary function using a loop
tic
for tind = 1:length(t)
    tester(tind) = cos(2*pi*fd*t(tind))/(2*pi*fd.*t(tind));
end
toc

pause; disp('Press a key');
% Same calculation with logical indexing
tic
tester2 = cos(2*pi*fd.*t)./(2*pi*fd.*t);
toc
  • 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-21T04:30:37+00:00Added an answer on May 21, 2026 at 4:30 am

    The biggest cost in your first loop actually comes from dynamically resizing the array tester. Each time through the loop, Matlab has to copy the existing array to a new location in memory with room for the extra element. So, that’s an O(n) operation for each iteration of the loop. If you pre-allocate the array, it will run much faster, e.g.

    tic
    tester = zeros(100000,1);
    for tind = 1:length(t)
        tester(tind) = cos(2*pi*fd*t(tind))/(2*pi*fd.*t(tind));
    end
    toc
    

    On my system, I get 11.3 seconds for the original loop, 0.0013 seconds for the vectorized version and 0.010 seconds for the loop with the memory for tester preallocated.

    It’s worth mentioning that many other languages with resizable arrays allocate additional space in chunks proportional to the current size of the array, so the cost of building an array by appending one element at a time is only O(n log n), so this is a particular deficiency of Matlab.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Is there an equivalent for Interlocked.Exchange for boolean? Such as an atomic exchange of
Is there an equivalent of svn's blame for Perforce on the command line? p4
Is there an equivalent to the Java File method isDirectory() in MFC? I tried
Is there an equivalent of a SQL IN statement in LINQ to objects?
Is there an equivalent to Apache's VirtualHost for IIS? We want to be able
Is there some equivalent of friend or internal in php? If not, is there
Is there an equivalent to Thread.Sleep() in Access VBA?
Is there an equivalent event to LBN_SELCHANGE but for a listview?
Is there an equivalent of the OS X Keychain, used to store user passwords,
Is there the equivalent of the Hello World program for GIS applications? I am

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.