passing strings to a function to call commands

1 次查看(过去 30 天)
I'd like to create a function to automate the passing variable names to statement. I tried to create a function to achieve it using is varargin and foo loop. The challenge is to pass unknown number for string names to a function call.
Manual method is as follow.
Vdc(1,:) = logsout.get('Vdc').Values.Data(:,1) ;
Vc(1,:) =logsout.get('Vc').Values.Data(:,1) ;
I_L(1,:) =logsout.get('I_L').Values.Data(:,1) ;
The function I created with errors
function logger(varargin)
% input is in the format logger(Vdc,Vin,Iload)
% where "logsout" is the name of the object stored Vdc,Vin,Iload,IL,,,,
% I want to automatically extract selected variables and store them with
% the original name
nsize=nargin;
for k=1:size
tag=spprintf(varagin(k));
data(:,1) = logsout.get('Vdc').Values.Data(:,1) ; % where tag='Vdc'
assignin('base',tag,data);
end
Any suggestions appreciated.
  1 个评论
Yao Li
Yao Li 2014-5-22
编辑:Yao Li 2014-5-22
I had a quick look at your codes. At least, size is undefined and spprintf should be sprintf. In addition, varargin should be a cell array, and there is a typo in varagin(k). It should be changed to varargin{k}

请先登录,再进行评论。

回答(1 个)

Rashmil Dahanayake
Rashmil Dahanayake 2014-5-22
编辑:Rashmil Dahanayake 2014-5-22
I figured it out for a certain extent.
function logdata2=(A)
% logvar={'Vdc','I_L'}; % pass this to the function
for z=1:length(logvar)
xxz(1,:) = logsout.get(logvar{z}).Values.Data(:,1) ;
assignin('base',logvar{z},xxz);
end
Now the challenge is instead of using intermediate variable,which contains string characters (ie ' symbol), is it possible to call the function as loadata(Vdc,IL);

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by