Matlab 如何在for循环中保存而不覆盖
我使用的tiff图像有1000帧。为了追踪物体从一帧到另一帧的位置,我已经确定了物体的中心和半径。现在,我需要指定帧的编号,在for循环中,它的重复等于长度,显然等于特定帧的中心点集的长度。但在repmat之后,最后一次迭代值仅被保存,即1000Matlab 如何在for循环中保存而不覆盖,matlab,Matlab,我使用的tiff图像有1000帧。为了追踪物体从一帧到另一帧的位置,我已经确定了物体的中心和半径。现在,我需要指定帧的编号,在for循环中,它的重复等于长度,显然等于特定帧的中心点集的长度。但在repmat之后,最后一次迭代值仅被保存,即1000 clear % number of images in one TIFF file numimgs=size(imfinfo('C:\Users\user\Desktop\Photometrics_2x bin_video2.tif'),1); cen
clear
% number of images in one TIFF file
numimgs=size(imfinfo('C:\Users\user\Desktop\Photometrics_2x bin_video2.tif'),1);
centreDark = [];
radiiDark = [];
frame=[];
for FR=1:numimgs
%To read in all images in TIFF-file
output_image2=imread('C:\Users\user\Desktop\Photometrics_2x bin_video2.tif',FR);
output_image3=double(output_image2);
disp(num2str(FR))
ii=output_image3 - meanImage;
%ii=im2double(meanImage-filename)
I2 = mat2gray(ii);
qq=fibermetric(I2, 38,'ObjectPolarity','Bright');
%Apply Hough circular transform
[centreDark1, radiiDark1]=imfindcircles(qq, [Rmin Rmax],'Sensitivity',0.87,'ObjectPolarity','bright');
centreDark = [centreDark;centreDark1];
size(centreDark)
radiiDark = [ radiiDark;radiiDark1];
size(radiiDark)
frame=repmat(FR,1,size(centreDark(:,1)))
fr=frame(:)
%%%%fr{:,FR}=frame(:)
end
%Table
T1= array2table(centreDark,'VariableNames',{'centreX','centreY'});
T2=array2table(radiiDark, 'VariableNames',{'Radius'});
T3=array2table(frame, 'VariableNames',{'Frame'});
% FR=fillmissing(T3,'previous');
T=[T1,T2,T3]*
*请解释您到底想做什么,您想从每次迭代中存储什么,以及存储在哪里(在哪个变量中)。为什么这
fr{:,fr}=frame(:)
被注释掉了?它不起作用吗?如果是这样,它也可能在循环之前初始化。类似于fr=cell(numgs,1)
FR
是单个数字(循环计数器)。在上一次迭代中,它等于numgs
。centreDark
的大小类似于1000,1
(取决于检测到的对象数量)。因此,您的repmat
调用是repmat(numgs,11000,1)
。您要求Matlab重复numgs
,无论centreDark
的大小如何。请解释您到底想做什么,希望从每次迭代中存储什么以及在哪里(在哪个变量中)。为什么这fr{:,fr}=frame(:)
被注释掉了?它不起作用吗?如果是这样,它也可能在循环之前初始化。类似于fr=cell(numgs,1)
FR
是单个数字(循环计数器)。在上一次迭代中,它等于numgs
。centreDark
的大小类似于1000,1
(取决于检测到的对象数量)。因此,您的repmat
调用是repmat(numgs,11000,1)
。您要求Matlab重复numgs
,无论centreDark
的大小如何。