2017-05-30 56 views
1

合併到數據集我有兩個數據集分別存儲在單元陣列和雙數組中。這兩個陣列的設計是:按照鍵

數組1(名稱:res)(雙)由兩列組成;一個唯一的ID列和一個數據列。

enter image description here

陣列2(名稱:配置)(單元陣列)包含3個的單元,每一個字符串內。數組中的最後一個單元格包含與數組1中的id匹配的id雙精度整數。單元格數組中的雙精度整數在必要時轉換爲double。

enter image description here

我想以具有3個單元的單元陣列,並且在一個共同的單元陣列中陣列1的結果列在兩個數據集合並。我該怎麼做呢?

我有以下代碼。該代碼不會返回結果的正確順序。

function resMat = buildResultMatrix(res, config) 

resMat = {}; 

count = 1; 

count_max = size(res,1)/130; 

for i = 1 : size(res,1) 
    for j = 1 : size(res,1) 
     if isequal(res(i),str2double(config{j,3})) 
      if i == 1 
       resMat(end+1,:) = {config{j,:} res(j,2:end)}; 
      else 
       if count == 1 
        resMat(end+1,:) = {config{j,:} res(j,2:end)}; 
       elseif count == count_max 
        resMat(end+1,:) = {config{j,:} res(j,2:end)}; 
       else 
        resMat(end+1,:) = {config{j,:} res(j,2:end)}; 
       end 
       count = count + 1; 
      end 
     end 
    end 
    count = 1; 
end 
end 
+0

使用matlab調試器可能會幫助您本地化您的問題。 – m7913d

+0

我已經花了兩天現在在調試器公司,所以我迷路了.. – MikaelKP

回答

0

首先轉換ID在config爲數字:

config(:,3) = num2cell(str2double(config(:,3))); 

然後運行這個命令:

res = sortrows(res,1); 
config(:,4) = num2cell(res(cell2mat(config(:,3)),2)) 

這將會把從res數據在第4列config行中使用相同的ID。

+0

我得到以下警告:使用貓的錯誤 串聯的矩陣的大小是不一致的。 cell2mat(line 83)中的錯誤 m {n} = cat(1,c {:,n}); – MikaelKP

+0

當你運行'size(config(:,3))'時,你會得到什麼?配置的最後一列中的所有單元格是否只包含一個數字(id)? – EBH

+0

size(config(:,3))得到390和1.是的,配置的最後一列只包含一個數字(雙精度),所以該列包含一個對應於res的id號的數字 - 但數字不在order – MikaelKP