从文本文件中读取数据并传递给函数

时间:2014-10-23 20:30:44

标签: matlab

我有一个这个程序,它从.txt文件中获取所有数据。可以从文本文件中读取所需的数据并将该数据传递给要使用的函数吗?我已经尝试先读取数据并将其传递给函数,但之后我的情节拒绝工作 现在我通过将文本文件的名称发送到函数然后读取数据来实现它,但这意味着每次调用函数时我都在读数据,我希望我只能读取一次数据然后将其传递给函数。我认为不多次阅读数据会大大加快我的计划速度。

我的代码看起来像这样

main.m

 young bein_AB_light.txt %%calling the function with bein_AB_light.txt as parameter.

young.m

function young(filename)

fid = fopen(filename,'r');
C = textscan(fid,'%*f%*f%*f%*f%f');
fclose(fid);

Y=10500*C{1}.^2.29; %

plot(C{1},Y,'.K')

if(strfind(filename,'AB'))
   xlabel('BMD[g/cm^3]');
   ylabel('Youngstudull');
   title('Reiknadur Youngstudull fyrir AB bein')
else
   xlabel('BMD[g/cm^3]');
   ylabel('Youngstudull');
   title('Reiknadur Youngstudull fyrir SCI bein')
end
end

...编辑 这是我正在尝试但它在尝试绘图时给我错误。 Plot不接受文件名{1}用作X协调。我也试过使用cell2mat函数来改变输入但是没有用。

main.m

fid = fopen(filename,'r');
AB_Bein = textscan(fid,'%*f%*f%*f%*f%f');
fclose(fid);
young AB_bein %%calling the function with AB_Bein as parameter.

young.m

function young(filename)



Y=10500*filename{1}.^2.29; %

plot(filename{1},Y,'.K')

if(strfind(filename,'AB'))
   xlabel('BMD[g/cm^3]');
   ylabel('Youngstudull');
   title('Reiknadur Youngstudull fyrir AB bein')
else
   xlabel('BMD[g/cm^3]');
   ylabel('Youngstudull');
   title('Reiknadur Youngstudull fyrir SCI bein')
end
end

1 个答案:

答案 0 :(得分:1)

您的问题可能就是您拨打young的方式。

如果我创建一个功能

function fileContents= young(filename)

fid = fopen(filename,'r');
C = textscan(fid,'%*f%*f%*f%*f%f');
fclose(fid);
fileContents=C{1};

然后使用

调用它
fileContents= young('textfile.txt');

而不是

young textfile.txt

将文件中的数据输出到名为fileContents

的变量中