2014-01-11 42 views
0

我有6個數據集,每個數據集是一個576by576矩陣。每組數據代表在30秒間隔內進行的測量。例如在t = 0時的set1,在時間= 30時的set2,...,在150秒時的set5。 如果您願意,您可以將這些設置看作框架。我需要從每個數據集中獲取第一個數據點(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秒的數據波動。Matlab中時間相關矩陣集的數據擬合

附加信息: 1.-每個數據點與同一組中的其餘數據點是獨立的。 2.-它是一個非線性擬合 3.-所有的值都是真實的

Matlab是否有這種問題的優化工具? 我應該把這個問題當成一維數據擬合,並創建一個執行576^2次這個工作的for循環? (我甚至不知道從哪裏開始)

如果我不夠清楚,可隨時詢問或編輯任何內容。我不知道,我已經選擇了最精確的標題爲這種problem.Thanks

更新:

基於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

我會建議你的主要數據矩陣的大小(6,576,576) - >a。來自每個數據集的第一點(1,1)將是a(1,1,1), a(2,1,1), a(3,1,1) .. a(6,1,1)。正如你所說每個點來自其他點(k,l)的每個數據集中的每個點(i,j),我建議對所有數據集的每個位置(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點。這可能不是你想要的答案,但是發表評論的時間很長

+0

我很難拍攝MRI序列。由於這種常見的重建576x576x150需要很長時間。我只是想找出一個節省時間的捷徑。 – Jorge