for loop like c++ in MATLAB

for loop in C or C++ is very flexible and fast. Why MATLAB doesn't create a for loop like C or C++?

1 Comment

Hamid
Hamid on 25 Jan 2014
Edited: Hamid on 25 Jan 2014
In general, problem of MATLAB is in for loops that cause some slowness. If while loops are used instead of for loops, speed will be increased very much (some complicated tests can be very interesting) and additionally, while loops are more flexible than for loops and therefore, MATLAB, will be an excellent friend for a programmer with very complicated mathematical calculations and operations. Additionally, because of existence of MATLAB Coder toolbox, it's unnecessary to follow C++ for these complicated calculations. In fact, in early future, C++ with respect to MATLAB, will be like Assembly with respect to C++. Only MATLAB. Thanks God for such a powerful software and I wish God's attentions and helps for its kind engineers.

Sign in to comment.

Answers (2)

Image Analyst
Image Analyst on 12 Jan 2014
I'm not sure I understand what you are saying. MATLAB does have a for loop. Sure it doesn't use a { and the } is replaced by "end" and the way your specify the iterator is different, but it still has one. Different languages have different syntax - that's just the way it is, not just for MATLAB but for all languages.

11 Comments

Hamid
Hamid on 13 Jan 2014
Edited: Hamid on 15 Jan 2014
I love matlab; it's excellent but syntax isn't in question at all. suppose we want to detect numbers holding in Pythagorean theorem, a^2=b^2+c^2 , from 1 to 1000 by three consecutive while or for loops. after detecting some elements, we should reject detected elements. one way is inserting zero for them (we use an if statement before executing inner for or while loop for rejecting detected elements). this work, takes very long time even by using mex-file correspondent but if we could say, after detecting first three elements, to loop that we determined these three numbers and go directly to first for or while loop to start from beginning, it takes very smaller time. I love matlab but it is not good in some loops and optimizing for and wile loops, will answer very people that, for example, say that matlab isn't suitable for performing very complicated mathematical expressions involved in physical chemistry that last days, months or even years. I wish that day, performing all my complicated mathematical calculations in matlab.
José-Luis
José-Luis on 13 Jan 2014
Edited: José-Luis on 13 Jan 2014
I am not sure I understand what you mean. That being said, I like Matlab, but it can be rather sluggish. It's the price you pay (besides what the Mathworks charges) for a high-level language. Also, it is an interpreted language, so there's an overhead right there.
If you write decent C++, then Matlab is not going to beat that.
The question remains whether you can write fast code in another language and you are willing to invest the time it takes. You might have to go down to assembly if you want blazing fast, but then you have to be confident that you can do a better job than an optimizing compiler.
I don't see how a^2=b^2+c^2 is going to take 3 loops. Two maybe, if you want every possible combination of every b with every c, but how do you get three? What is being incremented in each loop?
I mean Pythagorean theorem. Of course, it is immaterial here; subject is another thing: ability to return to first loop in several loops written sequentially and changing their indices.
Sure. Use:
break
for ii = 1:10
for jj = 1:10
if jj>5
break
end
end
disp([ii jj])
end
Nothing you've described is not readily available and fast in MATLAB.
Then don't use a for loop. A while statement should do the trick
ii=1;
while ii < 10
ii = ii + 1;
if something
ii = whatever iteration you want to go back to
do stuff
ii = you can even jump forward
end
end
Hamid
Hamid on 16 Jan 2014
Edited: Hamid on 16 Jan 2014
for one loop, while is very easy and good but when we have 3 loops, for example, we cannot say to first loop anything from third loop. the problem is here.
I didn't really understand what "we cannot say to first loop anything from third loop" means. I think we're all waiting for you to give us a loop in C and a loop in MATLAB (that does the same thing if you can), and show how what you want to do is much easier in C than in MATLAB.
I think, because of existence of MATLAB Coder toolbox, it's unnecessary for me to follow C++. What a Great Chance. In fact, in early future, C++ with respect to MATLAB, will be like Assembly with respect to C++.
Well it looks like we're done here, but I don't think you illustrated your point about how C is easy but MATLAB is harder. You gave us no code examples to compare them.
Hamid
Hamid on 25 Jan 2014
Edited: Hamid on 25 Jan 2014
In general, problem of MATLAB is in for loops that cause some slowness. If while loops are used instead of for loops, speed will be increased very much (some complicated tests can be very interesting) and therefore, MATLAB, will be an excellent friend for a programmer with very complicated mathematical calculations and operations. Additionally, because of existence of MATLAB Coder toolbox, it's unnecessary to follow C++ for these complicated calculations. In fact, in early future, C++ with respect to MATLAB, will be like Assembly with respect to C++. Only MATLAB. Thanks God for such a powerful software and I wish God's attentions and helps for its kind engineers.

Sign in to comment.

Azzi Abdelmalek
Azzi Abdelmalek on 12 Jan 2014
Edited: Azzi Abdelmalek on 12 Jan 2014
Each language has its advantages and disadvantages, but sometimes, if the user doesn't know how to use it, doesn't mean the language is bad. In your case maybe, if you give an example, there should be a good way to handle it either with c++ or with matlab

1 Comment

I love matlab; it's excellent but syntax isn't in question at all. suppose we want to detect numbers holding in relation: a^2=b^2+c^2 from 1 to 1000 by three consecutive while or for loops. after detecting some elements, we should reject detected elements. one way is inserting zero for them (we use an if statement before executing inner for or while loop for rejecting detected elements). this work, takes very long time even by using mex-file correspondent but if we could say, after detecting first three elements, to loop that we determined these three numbers and go directly to first for or while loop to start from beginning, it takes very smaller time. I love matlab but it is not good in some loops and optimizing for and wile loops, will answer very people that, for example, say that matlab isn't suitable for performing very complicated mathematical expressions involved in physical chemistry that last days, months or even years. I wish that day, performing all my complicated mathematical calculations in matlab.

Sign in to comment.

Categories

Asked:

on 12 Jan 2014

Edited:

on 19 Jul 2014

Community Treasure Hunt

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

Start Hunting!