2015-04-13 2 views
0

Я определил функцию, вычисляющую соответствующую электронную плотность при данной температуре, исходя из данных, данных в базе данных в моем файле excel. Проблема в том, что каждый раз, когда эта функция вызывается, она открывает файл excel, что очень трудоемко. Я не хочу помещать всю базу данных в качестве входных данных этой функции, и я не хочу определять data как глобальный, знает ли кто-нибудь, как я могу просто прочитать этот файл excel для всех введенных температур?Excel читается в функции Matlab

function [electron density] = electrondensity(temperature) 
data=xlsread('D:\Matlabcode\partitionfunctions.xlsx',2,'A2:D5'); 
...... 
end 
+1

У вас есть отдельная функция для чтения ваших данных из файла excel и [сохранения подмножества, которое вы хотите использовать в файле * .mat) (http://www.mathworks.com/help/matlab/ref/save.html) что вы можете [загрузить] (http://www.mathworks.com/help/matlab/ref/load.html) в свою основную функцию. – excaza

ответ

0

Используйте постоянную переменную:

function [electron density] = electrondensity(temperature) 
persistent data; 
if isempty(data) 
    disp('calling xlsread') 
    data=xlsread('D:\Matlabcode\partitionfunctions.xlsx',2,'A2:D5'); 
end 

этак первый раз, когда вы вызываете функцию создания переменной, инициализируется пустой матрицей, и xlsread называется. В следующий раз вы вызываете функцию, которую получает переменная, и xlsread не вызывается.

Чтобы «очистить» значение постоянной переменной (которая не будет отображаться в рабочей области переменных), используйте clear electrondensity.

Аналогичным образом вы также можете использовать глобальную переменную.