Matlab:比较for循环中的字符串

时间:2016-07-01 11:23:40

标签: matlab for-loop simulink string-comparison

我想比较两个结构中的两个字符串。我的代码如下:

%matlab模型扫描

[variables] = Simulink.findVars('myModell');
variablesNames =[];

%save the names of all the variables in variablesNames
for t= 1:length(variables)
     variablesNames(t).Name = variables(t).Name;   
end

%scan workspace
for f = fieldnames(my_workspace)
    found = false;
    for c = 1:length(variablesNames)
        if strcmp(f{c}, variablesNames(c))        
            found = true;
            result = 'Found in Workspace: ';
        end    
        if ~found
            result = 'Not found inside Workspace';
        end
    end
    disp(['Workspace Variable: ', sprintf('%-*s',40,f{c}), result]);
end

variablesNames 是一个带有1个字段的结构1x15

my_workspace 是包含20个字段的1x1结构

我只返回一个变量。 这段代码有什么问题?

1 个答案:

答案 0 :(得分:2)

我真的不明白你为什么要在这里创建一个新结构:variablesNames(t).Name,因此我只删除了那部分。

修改后的代码只是遍历variables struct-array,并检查变量my_workspace是否有一个字段,其中包含存储在当前处理元素的Name字段中的值的名称,使用isfield

[variables] = Simulink.findVars('myModell');

for i = 1:length(variables)
   if isfield(my_workspace, variables(t).Name)
      result = 'Found in Workspace: ';
   else
       result = 'Not found inside Workspace';
   end

   disp(['Workspace Variable: ', sprintf('%-*s', 40, variables(t).Name), result]);
end