导入数据时MATLAB函数错误:编译时,“data”被确定为变量

时间:2015-04-28 12:46:33

标签: matlab

我有一个函数,但在调用函数时我无法处理名为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;

2 个答案:

答案 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;