我有一个函数,但在调用函数时我无法处理名为data的变量。如果我单独运行代码(不调用函数,它可以工作)。
请在下面找到实际代码:
function data = returns_ext(input);
clear all
clc
ticker = 'BA';
filename = ['C:\Users\FP\Documents\MatlabCode\P\prices\' ticker 'daily.csv'];
newData1 = importdata(filename);
% Create new variables in the base workspace from those fields.
vars = fieldnames(newData1);
for i = 1:length(vars)
assignin('base', vars{i}, newData1.(vars{i}));
end
prices_data = data;
错误:在编译时,“数据”被确定为变量而且这个 变量未初始化。 “data”也是函数名称和MATLAB的早期版本 叫这个功能。 但是,MATLAB 7禁止在同一名称中使用相同的名称 上下文既是函数又是变量。
Error in ==> returns_ext at 17
prices_data = data;
答案 0 :(得分:0)
您应该用eval替换assignin
,因为assignin
在调用returns_ext
的调用函数或基本工作区中分配。请参阅下面的简单示例:
function test
newData1.prices = 1;
newData1.dates = 2;
variables = {'prices','dates'};
for i = 1:length(variables)
temp = newData1.(variables{i});
eval([variables{i} ' = temp;']);
end
disp(prices)
disp(dates)
答案 1 :(得分:0)
如果数据在' base'工作区然后你需要更新你的代码:
data = eval('base','data;');
prices_data = data;