want for loop to stop if k < 4

1 visualización (últimos 30 días)
Pedro Almeida
Pedro Almeida el 1 de Feb. de 2022
Comentada: Pedro Almeida el 1 de Feb. de 2022
This part of the program takes a file, and takes the numbers inside that file and puts it into a matrix. It only works when, in each line, it does this 4 times, how do I make it so, if it does it less than 4 times and the line is empty, it stops the for loop?
while ~feof(fid)
i = i + 1;
linha = fgetl(fid);
for k = 1:4
linha(1) = [];
[valor, linha] = strtok(linha, ',)');
matriz(i,k) = str2double(valor);
end
end

Respuesta aceptada

Image Analyst
Image Analyst el 1 de Feb. de 2022
Try this:
while ~feof(fid)
i = i + 1;
linha = fgetl(fid);
% Break if the line is empty and we won't be able to get 4 numbers from it.
if isempty(linha)
break; % Break ot of the while.
end
% If we get to here, the line is good and we should be able to get our
% numbers using the poster's original code (hopefully).
for k = 1:4
%linha(1) = []; % Not needed.
[valor, linha] = strtok(linha, ',)');
matriz(i,k) = str2double(valor);
end
end
  1 comentario
Pedro Almeida
Pedro Almeida el 1 de Feb. de 2022
I change a few things based on that and it worked, thank you!

Iniciar sesión para comentar.

Más respuestas (1)

Benjamin Thompson
Benjamin Thompson el 1 de Feb. de 2022
Use the break command:
if (k < 4) break;
  1 comentario
Pedro Almeida
Pedro Almeida el 1 de Feb. de 2022
for it to also work with the correct format, I have to put something else like this, but it gives me an error 'Matrix index is out of range for deletion.' in linha(1) = [ ]; anything else I could try?
while ~feof(fid)
i = i + 1;
linha = fgetl(fid);
for k = 1:4
linha(1) = [];
[valor, linha] = strtok(linha, ',)');
matriz(i,k) = str2double(valor);
if (k < 4) & linha == 0
break
end
end
end

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by