created a function that inputs coordinate points like (1,2) in a loop for n number of points and keeps the x and y in seperate arrays. problem is it is only taking the first numbers entered... any clues?

조회 수: 5 (최근 30일)
function[x,y] = readCoordinates(n)
x = zeros(n,1);
y = zeros(n,1);
for i = 1:n
enterString = input('Please enter coordinates within parentheses seperated by a comma.','s');
components = sscanf(enterString,'%c%d%c%d%c');
x(i) = components(2);
y(i) = components(4);
end
end

답변 (1개)

John Chilleri
John Chilleri 2017년 4월 28일
Hello,
Your code will work with one simple change:
function[x,y] = readCoordinates(n)
x = zeros(n,1);
y = zeros(n,1);
for i = 1:n
enterString = input('Please enter coordinates within parentheses seperated by a comma.','s');
components = sscanf(enterString,'%c%f%c%f%c');
x(i) = components(2); % CHANGE ^ ^ from d to f
y(i) = components(4);
end
end
This will search for floating point numbers which will solve the problem.
You might also consider changing,
'%c%f%c%f%c' to '(%f,%f)'
which would require changing,
x(i) = components(1);
y(i) = components(2);
but this is more of a stylistic preference, and I haven't fully considered the repercussions of either.
Hope this helps!

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by