在MATLAB中为基本工作空间中的变量分配动态值

时间:2015-12-01 22:08:22

标签: matlab

load( lapFileSource, 'UntitledMeta_Data' );%My MetaData 
universal={'TestType';'TestApparatus';'TestSystem Location';
           'Configuration';'Wire condition';'Wire Type';'Circuit';};
u=11;
for o=drange(1:u)     
if strcmp('',MetaData{o})
    universal{o}='Null';
else
    universal{o}=MetaData{o};
end
assignin('base','universal{o}',MetaData{o})
end

我在工作场所分配变量时遇到错误。

1 个答案:

答案 0 :(得分:0)

您需要阅读所使用功能的文档。来自assignin的文档:

echo ("<a class='button href=\"class.php?id=".$row["ClassID"]."\">".$row["className"."</a>");

而且,更明确地说:

% The var input must be the array name only; it cannot contain array indices.

您可以将% assignin does not assign to specific elements of an array. % The following statement generates an error: X = 1:8; assignin('base', 'X(3:5)', -1); 调用转移到assignin循环之外,并将完整数组传递到基本工作区,也可以按照文档的建议使用evalin

例如:

for

结果数组function trialcode n = 5; myarray = cell(1, 5); for ii = 1:n; if mod(ii,2) myarray{ii} = 'odd'; else myarray{ii} = 'even'; end mycmd = sprintf('evalinarray{%u} = ''%s'';', ii, myarray{ii}); evalin('base', mycmd); end assignin('base','assigninarray', myarray) end evalinarray是等效的。在这两者中,我建议使用assigninarray,因为它比assignin方法更加健壮和明确。