我有6个数据集,每个数据集是576by576矩阵。每组数据表示在30秒间隔内进行的测量。例如set1 at t = 0,set2 at time = 30,...,set5 at 150th。
如果愿意,您可以将这些集视为帧。我需要从每个数据集中获取第一个数据点(1,1) - > (1,1,0),(1,1,3),(1,1,6),(1,1,9),(1,1,12),(1,1,15)并基于这6个点找到一个拟合公式,然后将该一般解决方案分配给我的解决方案matriz SM(1,1)
的第一个点。我需要对6组中的每个数据点执行此操作,直到我有576by576解决方案matriz。
如果一切顺利,我应该能够绘制SM(0s)= set1,SM(30s)= set2等。但不仅如此。 SM(45)应该在t = 45时返回测量值的预测,依此类推。目的是使一个矩阵能够预测从时间t = 0到150秒的数据波动。
其他信息: 1.-每个数据点独立于同一组中的其余数据点。 2.-它是非线性拟合 3.-所有值都是真实的
Matlab是否有针对此类问题的优化工具? 我应该将问题视为1D数据是否合适并创建一个执行576 ^ 2次作业的for循环? (我甚至不知道从哪里开始)
如果我不够清楚,请随意询问或编辑任何内容。我不确定我是否为这类问题选择了最准确的标题。谢谢
更新
根据Guddu的回答,我想出了这个:
%% Loadint data Matrix A
A(:,:,1) = abs(set1);
A(:,:,2) = abs(set2);
A(:,:,3) = abs(set3);
A(:,:,4) = abs(set4);
A(:,:,5) = abs(set5);
A(:,:,6) = abs(set6);
%% Creating Solution Matrix B
t=0:30:150;
SM=zeros([576 576 150]);
for i=1:576
for j=1:576
y=squeeze(A(i,j,1:6));
f=fit(t',y,'smoothingspline');
data=feval(f,1:150);
SM(i,j,:)=data;
end
end
%% Plotting Frame at t=45
figure(1);
imshow(SM(:,:,45),[])
我不确定这是否是最有效的方法,但它确实有效。我愿意接受新的想法或建议。感谢
答案 0 :(得分:0)
我建议您的主要数据矩阵大小(6,576,576) - > a
。每个数据集的第一个点(1,1)
将为a(1,1,1), a(2,1,1), a(3,1,1) .. a(6,1,1)
。正如您在其他点(i,j)
的每个数据集中所说的每个点(k,l)
一样,我建议将所有数据集的每个位置(i,j)
与其他位置分开处理。所以它将循环576 * 576次。代码可能是这样的
t=0:30:150;
for i=1:576
for j=1:576
datavec=squeeze(a(1:6,i,j)); % Select (i,j) point from all 6 frames
% do the curve fitting and save in SM(i,j)
end
end
我只是好奇你想要适合6点的非线性功能。这可能不是你想要的答案,但是发表评论很长一段时间