将字符串和num一起保存在矩阵中,matlab

将字符串和num一起保存在矩阵中,matlab,matlab,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 S

我想将一个字符串及其对应的索引保存在矩阵中,但我得到了一个错误

下面是一个小例子:

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_]

您需要一个单元格数组来处理字符串。为此,您可以预先分配一个单元格数组并填充它

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

注意,我还将循环变量I更改为idx。在MATLAB中,i和j被定义为sqrt-1。给变量起其他名称总是一个好主意。

您需要一个单元格数组来处理字符串。为此,您可以预先分配一个单元格数组并填充它

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

注意,我还将循环变量I更改为idx。在MATLAB中,i和j被定义为sqrt-1。给变量取其他名称总是一个好主意。

两条注释:1。在指定给Str_时不需要大括号。分配到Fmat时,您还可以执行以下操作:FMatidx,:=[idx,Str_];一行:谢谢@EitanT。我更新了我的答案。我更喜欢带花括号的单元格数组,发现它们不那么容易混淆,所以我对你的建议做了一些修改。在指定给Str_时不需要大括号。分配到Fmat时,您还可以执行以下操作:FMatidx,:=[idx,Str_];一行:谢谢@EitanT。我更新了我的答案。我更喜欢带花括号的单元格数组,发现它们不那么容易混淆,所以我对你的建议做了一些修改。