2015-12-01 17 views
0
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 

我收到錯誤以指定工作場所中的變量。在MATLAB中的基礎工作空間中爲變量分配動態值

+0

你可以請你展示你所得到的錯誤嗎? –

+0

錯誤 輸入參數不足。 – Piyush

回答

0

您需要閱讀所使用功能的文檔。從assignin的文檔:

% 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呼叫for循環之外,並通過完整的數組基地工作區,或你可以遵循文檔的建議並利用evalin

例如:

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 

所得陣列,evalinarrayassigninarray,是等價的。在這兩者中,我會建議使用assignin,因爲它比evalin方法更強大和更明確。