2013-01-02 83 views
1

我想保存一個字符串及其對應的索引在矩陣中,但我收到一個錯誤。在矩陣中保存字符串和數字,matlab

這裏是一個小例子:

Mat_=[];    
Val1=[10,19,22,15,30]; 
Val2=20 
Strs_=[]; 
for i= 1:length(Val1) 
if abs(Val1(1,i))<abs(Val2) 
      Str_={'Überschritten'}; 
     else 
      Str_={'Unterschritten'}; 
end 
Strs_=[Strs_;Str_]; 
Mat_=[Mat_;i]; 
end 
Mat_ 
Strs_ 
FMat=[Mat_,Strs_] 

回答

4

你需要一個單元陣列,用繩子工作。爲此,您可以預先分配一個單元格陣列並填充它。

Val1 = [10,19,22,15,30]; 
Val2 = 20; 
FMat = cell(length(Val1), 2); % Preallocate empty cell array 
for idx = 1:length(Val1) 
    if abs(Val1(1,idx)) < abs(Val2) 
     Str_ = 'Überschritten'; 
    else 
     Str_ = 'Unterschritten'; 
    end  
FMat(idx, :) = {idx, Str_}; 
end 

FMat電池陣列將是:

1 'Überschritten' 
2 'Überschritten' 
3 'Unterschritten' 
4 'Überschritten' 
5 'Unterschritten' 

請注意,我也改變了你的循環變量iidx。在MATLAB中,ij被定義爲sqrt(-1)。給變量賦予其他名稱總是一個好主意。

+0

@EitanT我只是在努力:) – HebeleHododo

+0

兩條評論:1.分配給'Str_'時不需要花括號。當分配到'Fmat'時,你也可以這樣做:'FMat(idx,:) = [idx,Str _];'在一行:) –

+0

謝謝@EitanT。我更新了我的答案。我更喜歡帶有花括號的單元陣列,發現它們更不易混淆,所以我對你的建議做了一些修改。 – HebeleHododo