2014-10-23 2 views
0

.txt 파일에서 모든 데이터를 가져 오는이 프로그램이 있습니다. 텍스트 파일에서 필요한 데이터를 읽고 해당 데이터를 작업 할 함수에 전달할 수 있습니까? 데이터를 먼저 읽고 기능에 전달하려고 시도했지만 내 플롯은 작동을 거부합니다.
지금은 함수에 텍스트 파일의 이름을 보내고 데이터를 읽음으로써 수행하고 있습니다. 그러나 이것은 함수를 호출 할 때마다 데이터를 읽음을 의미하며, 데이터를 한 번 사용한 다음 함수에 전달합니다. 데이터를 여러 번 읽지 않는다면 프로그램이 상당히 빨라질 것입니다.텍스트 파일에서 데이터 읽기 및 함수로 전달

는 내 코드이 내가하려고했던 것입니다

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 

편집 ... 이

main.m처럼 보이지만 그것은 나에게 오류시 제공 음모를 꾸미려고합니다. 플롯은 X 코디네이트로 사용할 파일 이름 {1}을 허용하지 않습니다. 또한 입력을 변경하려면 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 
+0

"내 음모가 일하기를 거부했다"는 것은 무엇을 의미합니까? 작동하지 않는 수정 된 코드를 표시하십시오. – chappjc

+0

좋은 아이디어. 새 코드에서 오류를 디버깅하는 데 도움이 필요하면 해당 코드를 표시해야합니다. – Peter

+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'); 

보다는 밖으로 fileContents라는 이름의 변수로 파일의 데이터를 제공

young textfile.txt 

사용하여 전화

관련 문제