How to obtain values from a table in matlab
1 次查看(过去 30 天)
显示 更早的评论
I have a table with two columns as circle's centre position and third one with frame number 1-1000. I want to obtain the values of circle centres in frame n and n-1 at a time, inorder to make matrix out of it
How can I do that?
0 个评论
采纳的回答
Adam Danz
2019-7-14
编辑:Adam Danz
2019-7-14
I'm not sure what you mean by "in order to make a matrix out of it". If this demo doesn't address the problem, please provide an example. Otherwise, here's how to extract the (x,y) coordinates for a given frame.
%Fake data
T = table((1:9)',(2:10)',[1;1;1;2;2;2;3;3;3],'VariableNames',{'X','Y','Frame'});
f = 2; % frame number
frameIdx = T.Frame == f; %row numbers of frame n
frameIdx = T.Frame == f-1; %row numbers of frame n-1 (not used in this demo)
% FROM HERE YOU CAN DO LOTS OF THINGS LIKE...
% ...isolate rows of table that belong to frame n
T(frameIdx,:)
% ...isolate only the (X,Y) values that belong to frame n
T(frameIdx,{'X','Y'})
% ...put (X,Y) values from frame n into a matrix
T{frameIdx,{'X','Y'}}
I recommend keeping the data in the table rather than extracting it into a matrix unless your analysis requres a matrix.
5 个评论
Adam Danz
2019-7-15
The loop will probably look something like this; T is your table.
% Create fake data
T = table((1:9)',(2:10)',[1;1;1;2;2;2;3;3;3],'VariableNames',{'X','Y','Frame'});
n = size(T,1)'; %number of rows in your table
distFcn = @(x1,x2,y1,y2)sqrt((x2-x1)^2 + (y2-y1)^2); %distance function
% Loop through each row starting at row #2
d = zeros(n-1,1); %create a vector where the distances will be stored
for i = 2:n
d(i-1) = distFcn(T.X(i-1),T.X(i),T.Y(i-1),T.Y(i));
end
And you can do that without a loop, too.
distFcn = @(x1,x2,y1,y2)sqrt((x2-x1).^2 + (y2-y1).^2); %distance function
% ^ ^ note the dots
d = distFcn(T.X(2:end),T.X(1:end-1),T.Y(2:end),T.Y(1:end-1))
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Other Formats 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!