2016-07-14 42 views
0

我有一個2X3矩陣。我想用兩列寬的行替換第2行(這是三列寬)。如果新行在第三列中有NaN,我沒關係。如何用matlab中不同長度的另一行替換一行矩陣?

例如在此代碼中x是兩列寬,我想用x替換矩陣「list」的第二行。

list=[1,2,3;4,5,3]; 
if numel(setdiff(list(1,:),list(2,:)))~=0; 
x=setdiff(list(1,:),list(2,:)); 
list(2,:)=x; %this is where i get error 
end 

感謝

+0

只是墊你的載體'通過計算行數之間的'list'和x'的'長度差異有足夠的'NaN' x': '名單(2,:)= [x NaN(1,size(list,2)-length(x))];' 如果你仍然有錯誤,檢查'x'確實是一個行向量而不是列矢量 – BillBokeey

+0

@BillBokeey! **列數***(不是行)之間的差異。儘管你的解決方案是正確的 –

回答

0

如果新的值總是比原來的小,你可以試試這個:

list=[1,2,3;4,5,3]; 
if numel(setdiff(list(1,:),list(2,:)))~=0; 
    x=setdiff(list(1,:),list(2,:)); 
    list(2,:)=nan(size(list(2,:))); 
    list(2,1:length(x))=x; 
end 

不過,我真的不喜歡這種解決方案,因爲它不是rubust。我喜歡與細胞結構的工作:

list=[{[1,2,3]};{[4,5,3]}]; 
if numel(setdiff(list{1,:},list{2,:}))~=0; 
    x=setdiff(list{1,:},list{2,:}); 
    list{2,:} = []; 
    list{2,:}=x; %length of this row is now arbitrary 
end 
0

這種替換錯誤路線:

list(2,:)=[x NaN*ones(1,size(list,2)-size(x,2))] 

這裏你比較listx列。形成由所有1構成的矩陣,所有這些矩陣然後與NaN相乘,並且因此以相同的順序形成矩陣,並且所有元素與NaN一起被形成,然後附加x以創建具有與矩陣的原始list

+0

謝謝大家....你的回答很有幫助。最好的祝福 –

相關問題