Why is this nested for loop faster in python? How can I make it faster in Matlab?

...code above...
J = zeros(n_x,n_x,n_x); %Preallocation
ionf = zeros(n_x,n_x,n_x); %Preallocation
dens = zeros(n_x,n_x,n_x); %Preallocation
temp = zeros(n_x,n_x,n_x); %Preallocation
%loop
for i = 1:n_x
for j = 1:n_x
for k = 1:n_x
data = strsplit(fgets(fin));
J(i,j,k) = single(str2double(data{1}));
ionf(i,j,k) = single(str2double(data{2}));
dens(i,j,k) = single(str2double(data{3}));
temp(i,j,k) = single(str2double(data{4}));
end
end
end
...code below...
I translated some code from python to Matlab. Why is this nested for loop faster in python? How can I make it faster in Matlab? All variables are defined, I just need advice in the for loop speed. Thank you in advance

1 Comment

WHY: because they are different languages and work in different ways. It is slow because it uses a nested loops and slow conversions inside those loops (e.g. str2double).
FIX: Just replace the all of this code with textscan and it will be much faster.

Sign in to comment.

Answers (0)

Asked:

on 6 Jun 2016

Edited:

on 6 Jun 2016

Community Treasure Hunt

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

Start Hunting!