2012-09-24 4 views
1

파일 이름이 enh0.dat, enh1.dat, enh2.dat ... 인 파일에서 최대 128 번 데이터를로드해야합니다. 그래서 파일 이름을 문자열 변수에 저장하고 이름이 문자열 변수에 저장된 파일에서 데이터를로드 한 다음로드 된 데이터를 나중에 플로팅을 위해 지정된 변수에 저장해야합니다. 그러나 MATLAB load 명령은 특정 이름 (데이터가 들어있는 파일 이름)이있는 변수에 데이터를로드하므로 plot 명령 사용을 자동화 할 수 없습니다.MATLAB - 문자열 변수로 저장된 파일 이름을 사용하여 파일의 데이터를 코드화합니다.

데이터를로드해야하는 파일의 이름을 문자열 변수에 저장할 수 있습니까? 나 또한 이것을 체크 아웃 MATLAB newbie: problem reading in file when the file name is stored in a string,하지만 그것은 나를 위해 작동하지 않습니다. textscan의 결과를 플로팅 할 때이 오류가 발생합니다.

??? ==> plot을 사용한 오류 셀에서 이중으로 변환하는 것은 불가능합니다.

indx = [1:128]; 
enh_file_cntr = 0; 
enh_pre = 'enh'; 
gain_pre = 'gain'; 
[enh_file_cntr_str, errmsg1] = sprintf('%d', enh_file_cntr); 
enh_file_name = strcat('enh', enh_file_cntr_str, '.dat'); 
[gain_file_cntr_str, errmsg1] = sprintf('%d', enh_file_cntr); 
gain_file_name = strcat('enh', gain_file_cntr_str, '.dat'); 
fid_enh = fopen(enh_file_name, 'r'); 
fid_gain = fopen(gain_file_name, 'r'); 
enh_data = textscan(fid_enh, '%f', 128); 
gain_data = textscan(fid_gain, '%f', 128); 
subplot(2,3,1); 
plot(indx, enh_data, 'b', indx, gain_data, 'r'); 

이 나는 ​​for 루프에서 enh_file_cntr의 값을 증가됩니다 작동하는 경우 :

이 사용 된 코드입니다. 위의 코드를 수정하려면 어떻게해야합니까?

답변

1

첫 번째 : plot 함수는 숫자 행렬 형식의 입력을 허용합니다. 셀 배열 인 textscan 함수의 출력을 입력하려고합니다. 귀하의 경우, 세포 배열 의 첫 번째 요소는 숫자 매트릭스를 포함하지만 개체는 숫자 매트릭스 자체는 아닙니다. 셀 내부에 저장된 숫자 행렬을 검색하려면 플롯 기능을 호출하기 전에

enh_data = enh_data{1}; 

을 사용하십시오. 참고 : 셀 배열의 요소에 액세스 할 때는 항상 중괄호 ({})를 사용하십시오. 수치 행렬의 요소에 액세스 할 때는 일반 괄호를 사용하십시오 (예 : ()). 여러 셀이 포함 된 셀 배열이있는 경우 ()을 사용하여 조각을 잘라낼 수 있습니다.

은 물론, 셀 어레이의 셀 자체가 셀 어레이를 포함 할 수 있습니다,하지만 어쩌면 이것에 대해 걱정하지 마십시오 지금 :-)

둘째 : 당신이 fopen 열립니다 모든 파일을 닫아야합니다. 예를 들어, textscan을 사용한 다음 fclose(fid_enh)으로 파일을 다시 닫습니다.

셋째, 문자열에 파일 이름을 저장하는 것이 무슨 뜻인지 잘 모르겠습니까? enh_file_name 변수를 사용하여 위의 코드 스 니펫에서 정확히 수행 한 것으로 보입니까?

+0

예 여기에서도 똑같은 작업을하고 있습니다. 그러나 textscan 함수의 결과가 음모에 사용할 수없는 셀 배열입니다. 위의 코드를 원하는대로 보여주기 위해 나는 당신의 제안을 시도 할 것입니다 그래서 올바르게 이해한다면, textscan의 결과는 박스 번호 (0, 0)가 1x128 배열에있는 파일의 128 데이터 포인트를 모두 포함하는 엑셀 스프레드 시트와 같은 것입니까? 어떻게 해석해야합니까? 답장을 보내 주셔서 감사합니다. : – user13267

+0

그런데, 여기에 댓글을 달 때 어떻게 줄 바꿈을 삽입합니까? – user13267

+0

고맙습니다. – user13267

1

로드 명령을 사용하여 데이터를 읽을 수도 있습니다.

생성 된 변수 이름으로 문제를 해결하려면 load 명령을 사용하여 변수를 지정하고 출력하십시오.

나는 처음

load(enh_file_name) 

을 시도하고 만든 변수는 변수 enh_file_name에서 파일 이름을 알게되었다 생각합니다.

당신은 그냥이의 측면 이점은 당신이 늘 휴대 변수를 처리해야한다는 것입니다

enh_data = load(enh_file_name) 

사용해야합니다.

+0

대단히 감사합니다. 대체 방법이 될 수 있다고 생각합니다. – user13267

관련 문제