没仔细研究你那个拟合函数的用法。
不过像这种需要分段处理数据的情况很多,有种在matlab里很常用的技巧感觉你可以学学:
假设原始数据(xdata)是一列100个数,你需要一次处理13个,那么下面这段代码先将这100数“折叠”成一个13行的矩阵(x)。我这个例子里是折叠成13*8的矩阵了。
因为100不能整除13,所以会在最后补零。如果你不需要补零,而是把最后的零头扔掉,那么就把
ncol=ceil(nxdata/n);
ncol=fix(nxdata/n);
最后就可以在循环里一列一列的处理数据了。我这个例子只是y(:,i)=x(:,i)而已,你的情况应该就是调用你自已写的拟合函数。
y=y(:);
把数据还原成一维的。
如果你需要把之前补零的值删掉也可以在还原成一维的时候去掉。
以下是一个小例子,仔细研究一下就能学会这个小技巧了。
xdata=(1:100).';
nxdata=length(xdata);
nrow=13;%假设你需要一次处理13个数据
ncol=ceil(nxdata/nrow);
x=zeros(nrow,ncol,'like',xdata);
size(x)
x(1:nxdata)=xdata(:);
y=zeros(nrow,ncol,'like',xdata);
fori=1:ncol
y(:,i)=x(:,i);
y=y(:);
如果你在处理数据之前,能保证折叠之后是整除的,即无需补零。还用我这个小例子,比如需要折叠成10行,也可以用reshape(xdata,10,[])。[]是让matlab自己算整除后是多少列。如:
x2=reshape(xdata,10,[]);
size(x2)
matlab for循环语句解释本程序的功能是将矩阵I的**行、最后一行、**列、和最后一列的元素都清零。
本回答由网友推荐
循环语句主要有哪些?循环语句(循环结构):while语句:“当…”语句;dowhile语句:“做…当…(时候)”语句;for语句:条件语句(即“(做)…为了…”语句)
matlab循环效率问题为什么matlab的循环效率很低???matlab是解释语言,C是编译语言, 编译语言的速度更快一些。另个matlab是面向矩阵的编程, 写成矩阵形式比用循环的效率更高一些。
matlab循环语句for加什么才能算出循环次数?if rem(m,i)==0;%rem求余数
m%在break之前输出m
i%同理输出i
break;%提前结束,跳出matlab循环语句
end从1开始,步长为0.01,到10结束: for i=1:0.01:10 for j=1:0.01:10 循环语句 disp(i) %显示次数 end disp(j) end
matlab中for的用法for语句:
for i=1:2010
s=s+i;
while语句:
while j