2013-09-06 2 views
0

기본적으로 텍스트로 캡처 할 배열이 있으므로 Excel 파일의 한 셀에 열 머리글로 쓸 수 있습니다. 다양한 주제를 다루고 있으며, 아래에 몇 가지 데이터가 있습니다. 그래서 범위는 다음과 같습니다배열을 문자열로 캐스트 - MATLAB

range = 2:12; 

생성과 배열,하지만 난 엑셀 파일 헤더 그냥 2:12 읽고 싶어. 나는이 같은 num2str를 사용하여, 하나 개의 필드에이 텍스트를 캡처하는 또 다른 변수를 만드는 시도했다 :

rangeChar = num2str(range); 

내가 얻을 :

rangeChar = 2 3 4 5 6 7 8 9 10 11 12 

하지만 각 필드를 구분하므로 Excel로 내보낼 수 있습니다 그들은 각각 자신의 세포를 차지합니다. 원래 범위는 항상 순차적 아니다 - 나는 그래서 난 그냥 두 가지의

rangeChar = sprintf('%d:%d', range(1), range(end)); 

입력 할 수 없습니다

range = cat(2, 2:4, 8, 9:12); 

가있을 수 있습니다 예를 들어. 이견있는 사람?

+2

'range = cat (2, 2 : 4, 8, 9:12)'일 때 Excel 헤더를 읽어야 할 대상은 무엇입니까? – Jacob

답변

1

당신이 다른 방식으로 수행하고 문자열의 범위를 유지하고 그에서 벡터를 추출 할 수 있습니다 :

rangeChar = '2:12'; 
range = eval(rangeChar); 
+0

와우! 완전한! – dustynrobots

0

는 그냥 쓸 수 없습니다 : 당신이 그것을 필요로 할 때

range = '2:12'; 
+0

범위를 다른 계산을위한 배열로해야하는데,이를 변경하면 두 줄 (예 : range = 2:12, rangeChar = '2:12';)을 사용하지 않아도됩니다. 왜냐하면 if 하나를 변경하고 내 출력 파일을 잘못 변경하는 것을 잊지 마십시오. 말이 돼? – dustynrobots

0

은 "범위"를 개최 셀 배열을 사용하여 다음과 같은 코드를 사용합니다

range = {2:4, 8, 9:12}; 
range_str=repmat({''}, size(range)); 
for i=1:length(range) 
    if length(range{i})==1 
    range_str{i}=sprintf('%d', range{i}); 
    else 
    range_str{i}=sprintf('%d:%d', range{i}(1), range{i}(end)); 
    end 
end 
range_str 

출력 :

range_str = 

'2:4' '8' '9:12'