How to modify the code below so it can loop over certain files rather then 1?

1 visualización (últimos 30 días)
Hi, Below is the code which is reading one csv file I want to modify this code so it will read 100 csv files and produces 100 values of following [xc,yc,Re,a]. Quick modification would be helpful as deadline in an hour.
Code:
XY = dlmread('contours0.137.csv');
%
[xc,yc,Re,a] = circfit(XY(:,1),XY(:,2))
% reconstruct circle from data
n=100;
th = (0:n-1)/n*2*pi;
xe = Re*cos(th)+xc; ye = Re*sin(th)+yc;
figure(1),
plot(XY(:,1),XY(:,2),'b*',xe,ye,'r-'),
title(' measured fitted circles')
legend('measured','fitted')
text(xc-Re*0.9,yc,sprintf('center (%g , %g ); R=%g',xc,yc,Re))
% xlabel x, ylabel y
axis equal
  2 comentarios
muhammad choudhry
muhammad choudhry el 27 de Oct. de 2020
I have applied the for loop here but it is only reading first file and producing only results from the first file. Below is the code:
csvFile = dir("*.csv") ;
N = length(48) ;
for i = 1:N
data = readtable(csvFile(i).name) ;
XY = data
[xc,yc,Re,a] = circfit(XY(:,1),XY(:,2))
% reconstruct circle from data
n=100;
th = (0:n-1)/n*2*pi;
xe = Re*cos(th)+xc; ye = Re*sin(th)+yc;
end

Iniciar sesión para comentar.

Respuesta aceptada

KSSV
KSSV el 27 de Oct. de 2020
Editada: KSSV el 29 de Oct. de 2020
csvFiles = dir("*.csv") ;
N = length(csvFiles) ;
C = zeros(N,3) ;
for i = 1:N
XY = dlmread(csvFiles(i).name);
[xc,yc,Re,a] = circfit(XY(:,1),XY(:,2));
C(i,:) = [xc yc Re] ;
% reconstruct circle from data
n=100;
th = (0:n-1)/n*2*pi;
xe = Re*cos(th)+xc; ye = Re*sin(th)+yc;
figure(1),
hold on
plot(XY(:,1),XY(:,2),'b*',xe,ye,'r-')
end
title(' measured fitted circles')
legend('measured','fitted')
text(xc-Re*0.9,yc,sprintf('center (%g , %g ); R=%g',xc,yc,Re))
% xlabel x, ylabel y
axis equal
  5 comentarios
muhammad choudhry
muhammad choudhry el 28 de Oct. de 2020
What am I doing wrong here? I have no idea! to me it should work and give me values of [xc,yc,re,a] from each file I am asking it to read.
Code:
csvFiles = dir("*.csv") ;
N = length(csvFiles) ;
for i = 1:N
XY = readtable(csvFiles(i).name);
[xc,yc,Re,a] = zeros(48,1)
for i = 1:48
[xc,yc,Re,a] = circfit(XY(:,1),XY(:,2))
[xc,yc,Re,a](i) = rand;
end
% reconstruct circle from data
n=100;
th = (0:n-1)/n*2*pi;
xe = Re.*cos(th)+xc; ye = Re.*sin(th)+yc;
end
Error:
Error: File: test_circlefit.m Line: 12 Column: 14
Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for
mismatched delimiters.
KSSV
KSSV el 29 de Oct. de 2020
I have edited the answer.....center and radius of circle is stored in C.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Images en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by