2014-04-14 5 views
0
dataset=importdata(filename); 
[r,c]=size(dataset.data); 
names2=dataset.textdata(2:r+1, 1); 
names1=dataset.textdata(1, 2:c+1); 
rc=r*c; 
couples=cell(rc, 2); 
k=1 
for i=1:r 
    for j=1:c 
    couples{k}=[names2(i), names1(j)]; 
    k=k+1; 
    end 
end 

파일에는 테이블이 들어 있으며, 첫 번째 행과 첫 번째 열에는 이름을 나타내는 두 개의 문자열 목록이 들어 있습니다. 나는 모든 끈을 가져와야합니다. Matlab에서 셀 배열을 미리 할당하고 채우는 방법

는 그것이 내가 아는 그것은

couples = 
    nameA nameB 
    nameC nameD 
    nameE nameF 
    ... 

해야 내가

names1 1xc cell 
names2 1xr cell 
couples rcx2 cell 

을하고 싶지만 내가 커플을 시각화 할 때 내가

couples = 
    1x2 cell [] 
    1x2 cell [] 
    1x2 cell [] 
    ... 

를 얻을 작업 공간입니다 importdata가이를 수행하고 문자열을 텍스트 데이터에 저장할 수 있기 때문에이 결과를 얻을 수 있습니다. 당신이 그들을 시각화하면 얻을 수

names1 = 
    name1 
    name1 
    ... 

원하는 결과를 얻으려면 어떻게해야합니까? rcx2 차원의 셀 배열을 미리 할당하고 각 커플을 k 번째 행에 할당하는 방법은 무엇입니까? 나는 concanation으로 결과를 얻을 수 있지만 그것은 너무 수천 행과 함께 느린 것을 압니다.

+0

이름 1, 이름 2 및 r 및 c에 대한 값을 입력하십시오. – Lazarus

답변

1

귀하의 구현이 거의 정확합니다. 두 번째 열에 셀이있는 이유는 의 이름을 셀 배열의 첫 번째 열에 할당하려는 경우 couples{k}을 사용하여 두 열을 첫 번째 열에 할당하고 couples{k,1}을 사용하고 name1의 경우 셀 배열의 두 번째 열은 couples{k,2}입니다. 아래 코드를 사용해보십시오.

dataset=importdata(filename); 
[r,c]=size(dataset.data); 
names2=dataset.textdata(2:r+1, 1); 
names1=dataset.textdata(1, 2:c+1); 
rc=r*c; 
couples=cell(rc, 2); 
k=1 
for i=1:r 
    for j=1:c 
    couples{k,1}=[names2(i)]; 
    couples{k,2}=[names1(j)]; 
    k=k+1; 
    end 
end 
+0

나는 시험을했다. 커플 {1,1} = [이름 (1)] 커플 = {1x1 셀} 커플이 아닌 '문자열' – user3290180

관련 문제