function auto2_location_fractal(file_str,j) a=importdata(file_str);%读取坐标 X=a(1,:);%X为a的第一行,即横坐标 Y=a(2,:);%y为a的第二行,即纵坐标 L=0.04; center = [0.5*L,0.5*L];%选定图像中心 k = 1; step = 0.05*L;%步长,可调,越大越快,越小越慢,一般越小越精确 for r = 2*step:step:min(center(1),center(2))-step%选择一系列矩形,可调初始边长,边长递增幅度 R = 2*r; %A = imm1(center(1)-r:center(1)+r,center(2)-r:center(2)+r);%选定中心在图像中心,边长为R的正方形 Xmin = center(1)-r; Xmax = center(1)+r; Ymin = center(2)-r; Ymax = center(2)+r; N = 0; sum_ri = 0; for ii = 1:length(X) if (X(ii)>=Xmin) && (X(ii)<= Xmax) && (Y(ii)>=Ymin) && (Y(ii)<= Ymax) N = N + 1; dist = pdist2([X(ii),Y(ii)],center); sum_ri = sum_ri + dist^2; end end Rg(k) = sqrt(sum_ri/N);%计算得当量边长 XX(k) = log(Rg(k));%横坐标变量 YY(k) = log(N);%纵坐标变量 k = k +1; end plot(XX,YY); %绘制曲线 p=polyfit(XX(1,2:end-1),YY(1,2:end-1),1);%求拟合曲线斜率,可调曲线范围 P=p(1); % str1 = 'D:\文件夹\OneDrive\2021有限元模拟\20220220试验\'; % str2 = '.TXT'; % str3 = num2str(j); % str4 = num2str(P); % str5 = 'P_'; % str_all = strcat(str1,str3,str5,str4,str2); % fid=fopen(str_all,'wt');%打开命令流文件准备书写 fid=fopen('D:\OneDrive\ansys_workpath_lab\matlab_P\P值_坐标计算.txt','a+');%打开命令流文件准备书写 fprintf(fid,'P%d——%4.5f\n',j,P); end
时间: 2023-11-16 14:06:12 浏览: 71
fracdim.zip_fracdim_fractal dimension 1D_matlab 3d data
这段代码是一个计算分形维度的程序,主要是通过对一系列矩形内的点进行计数和距离计算,得到一组数据,再通过拟合曲线的斜率来计算分形维度P值。其中,file_str是坐标文件路径,j是文件序号,L是边长,center是中心点,step是步长,Rg是当量边长,XX和YY是分别对应横纵坐标的数组,p和P是拟合曲线的参数和斜率,str1到str5是用于文件命名的字符串变量,fid是文件流指针。
阅读全文