create video of position from matrix
조회 수: 1 (최근 30일)
이전 댓글 표시
I would like to plot the evolution of the positions of the nodes of my graph by extracting such informations from a matrix. I have tried with the following code:
nodesmatrix1=[100.930486523955,100.930575750737,100.930665005716,100.930754288889;...
0.537217125673953,0.537268640710124,0.537320172025868,0.537371719619598;...
0,0,0,0;...
-50,-50,-50,-50;...
87.6769342598990,87.6770372900756,87.6771403528114,87.6772434481033;...
0,0,0,0;...
-50,-50,-50,-50;...
-86.6025000000000,-86.6025000000000,-86.6025000000000,-86.6025000000000;...
0,0,0,0;...
-86.8313497413550,-86.8331653236005,-86.8349807356126,-86.8367959772504;...
50.8442720217766,50.8412459247854,50.8382199043914,50.8351939608639;...
202.668269119694,202.667265160646,202.666261247557,202.665257380501;...
0.313749463634742,0.317367162195871,0.320984737502106,0.324602189246993;...
-100.083107035647,-100.083114813157,-100.083122465259,-100.083129991967;...
202.668270199404,202.667266238431,202.666262323417,202.665258454434;...
87.4480844077347,87.4463715232573,87.4446586199985,87.4429456981209;...
50.8504867629172,50.8536751827095,50.8568634493359,50.8600515625364;...
202.668269910080,202.667265949606,202.666262035091,202.665258166609];
edge = [1 2;2 3;3 1;1 4;2 5;3 6];
type = [1; 1; 1; -1; -1; -1];
structure = VideoWriter('structure.avi');
open(structure);
for i = 1:4
EdgeTable = table(edge,type, ...
'VariableNames',{'EndNodes','type'});
structure=graph(EdgeTable);
nodestep=nodesmatrix1(:,i);
nodestepmatrix=[nodestep(1:3:length(nodestep))'; nodestep(2:3:length(nodestep))'; nodestep(3:3:length(nodestep))'];
p=plot(structure,'XData', nodestepmatrix(1,:), 'YData', nodestepmatrix(2,:),'ZData',nodestepmatrix(3,:));
frame = getframe(gcf);
writeVideo(structure,frame);
end
close(structure);
But it doesn't work. I obtain only the plot of the last column of nodesmatrix1.
What is wrong?
댓글 수: 0
채택된 답변
Sai Bhargav Avula
2020년 2월 20일
Hi,
There is a small change that needs to be done. The input to the writeVideo has to be a VideoWriter object, in your case the structure has to be a VideoWriter object. But it is being set to a graph in the for loop
structure=graph(EdgeTable);
Try not to overwrite this. Also, there are no significant change in the column values of nodesmatrix1 which is resulting in the same image in frame this is reason why it might appear that only the plot of the last column of nodesmatrix1 is being captured.
Hope this helps!
댓글 수: 0
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!