2013-01-02 43 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