How can I use data from .mat file into spline function?

1 view (last 30 days)
I used the ginput function to select a lot of points, who were stored into a 'data.mat' file.
I now need to use the x and y coordinates into the spline function, which are saved into 'data.mat', but I don't know how to "call" the coordinates from the 'data.mat' file.
I already loaded the data:
S = load('dados.mat');
And I already have the plot ready, I just don't know how to "call" the x and y values.
x =
y =
xx = linspace(0,500,100);
yy = spline(x,y,xx);
figure;
plot(x, y, 'ro');
hold on;
plot(xx, yy, 'b', 'LineWidth', 1.5);
  5 Comments
Stephen23
Stephen23 on 18 Jun 2021
Edited: Stephen23 on 18 Jun 2021
@Hélio Filho:
It is much more robust to load into an output variable (which is a scalar structure), just as you wrote in your question:
S = load(...)
and then access the fields of that structure, e.g.:
S.x
S.y
Either way you need to know and use the exact names of the data stored in the .mat file, which you can either get from the structure S (e.g. looking at it in the Variable Viewer or using fieldnames), or without even loading the filedata:
whos -file filename
Your original approach of loading into a structure is much better (it is less liable to bugs and easier to debug):

Sign in to comment.

Accepted Answer

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 17 Jun 2021
Here is the corrected code:
...
save('data.mat', 'x','y'); % Your variable names called x, y and you need to save them here
load data.mat
end
xx = linspace(0,500,100);
yy = spline(x,y,xx);
figure;
plot(x, y, 'ro'); % x, y from ginput (data.mat)
hold on;
plot(xx, yy, 'b', 'LineWidth', 1.5);
  2 Comments
Hélio Filho
Hélio Filho on 17 Jun 2021
Edited: Hélio Filho on 17 Jun 2021
I'm still getting the "Unrecognized function or variable 'x'." at the line where I first use x and y
  • yy = spline(x,y,xx);
Could it be I have an error in the data or something?
UPDATE: I did the acquiring the x and y data phase again, and I still get the same error, so it's not the file's problem.
UPDATE: So I fixed it, apparently there's such a thing as a "separator"? I don't know what it is, the text even changes color, and I dont know how I put it there, but basically i had the load before that separator, so it wasn't recognizing it. I pasted it below and I no longer have that error.
Even so, your answer helped me, so thanks!
Stephen23
Stephen23 on 18 Jun 2021
It is much more robust to load into an output variable (which is a scalar structure), just as the question shows:
S = load(...)
and then access the fields of that structure, e.g.:
S.x
S.y

Sign in to comment.

More Answers (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 17 Jun 2021
If all the data of x, y are saved under X, Y names from ginput in a sequenctial order in DATA.mat file.
You can load them and eploy, e.g.:
load DATA.mat
% x, y values will be in the MATLAB workspace
% Your code comes here
xx = linspace(0,500,100);
yy = spline(X,Y,xx);
...
  2 Comments
Hélio Filho
Hélio Filho on 17 Jun 2021
Hi!
So what I have is:
while (t <= tf)
mov.CurrentTime=t; frame=readFrame(mov); image(frame); drawnow
tv(i)=t; t=t+dt; i=i+1; title(strcat('Frame ',num2str(i)));
[x(i) ,y(i)]=ginput(1);
end
save 'data.mat'
load data.mat
end
xx = linspace(0,500,100);
yy = spline(X,Y,xx);
figure;
plot(x, y, 'ro');
hold on;
plot(xx, yy, 'b', 'LineWidth', 1.5);
With this I get the 'Unrecognized function or variable 'X'' error. Since I called [x(i), y(i)] at the input function I should be able to call it, or am I wrong?
Stephen23
Stephen23 on 18 Jun 2021
It is much more robust to load into an output variable (which is a scalar structure), just as the question shows:
S = load(...)
and then access the fields of that structure, e.g.:
S.x
S.y

Sign in to comment.

Categories

Find more on Graphics Performance in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!