初学者小白阶段,matlab的知识是需要积累的,而要用到的才是最容易记住的。前几天要求50个文本每个像素的标准差值,于是在高手指导下编写了一段matlab代码。
注释已给:
clear
clc
path=strcat(uigetdir(),'\'); %用界面点选方式选取路径,后面加'\'。
file=dir(strcat(path,'*.ini')); %列出路径下的所有ini后缀的文本。
filename={file.name}; %读取file变量中文本的name属性。
[~,filenum]=size(filename); %用filenum变量表示filename变量中的文本数量。
height=291;
weight=500; %我们的文本是291*500的二维数组。
dat=zeros(height,weight,filenum); %建立一个三维零数组。
mean=zeros(height,weight); %建立一个二维零数组。
for i=1:filenum
filenames=filename{i}; %对文本1-50编号
filenameabs=strcat(path,filenames); %重新定路径
dat(:,:,i)=load(filenameabs); %下载数据到三维数组中
mean=mean+dat(:,:,i); %将各个坐标的值相加
end
mean=mean/filenum; %求出平均值
z=zeros(height,weight); %建立一个新的二维零数组
for i=1:filenum
z=z+(dat(:,:,i)-mean).^2; %各个坐标数值与平均值的差的平方和
end
SD=(z/filenum).^.5; %求出标准差
savetxt=strcat(path,'SD.txt'); %设定一个保存SD数据的路径。
save(savetxt,'SD','-ascii'); %保存SD的数据到文件名为SD文本中,以反ascii码的方式储存。
还有一些零零碎碎的知识,希望自己能记下来。
s=sum(sum(x));表示一个数组所有元素的总和,而s=sum(sum(x(195-25:195+25,250:25:250:25)));表示x数组中50*50范围内的总和。
[x,y]=find(variable==min(min(variable)));是找出变量的最小值。