2012-04-30 4 views
0

나는 예를 들어, 문자열을 저장하는 무언가를 창조하고 싶은 :MATLAB - 저장 고통

for x = 1:3 

fruit = strcat('orange', num2str(x)); 

A = {fruit}; 

을 내가

A = 
orange1 
orange2 
orange3 

의 1 × 3 행렬의 출력을 만들 수있는 방법 내가 몇 가지 시도 하지만 아무것도 효과가 없습니다.

나는 그것이 복잡하다고 생각하지 않지만, 나는 단지 그것을 두들겨 맞지 않는 것처럼 보인다.

나는이 완료된 후, 나는 그런 그와 함께 정상 수치 행렬을 결합 할 수있을 것입니다 : 당신의 도움에 대한

N = [1 2; 3 4; 5 6]; 

FINAL = [N A]; 

>>output of FINAL would look like 
FINAL = 
1 2 orange1 
3 4 orange2 
5 6 orange3 

감사합니다.

+1

"1x3 매트릭스의 출력은 어떻게 얻을 수 있습니까?"라고 말하면서 출력하는 것은 3x1입니다. 그러면 행렬 A가 1x3 또는 3x1이 되길 원합니까? –

답변

4

MatLab에서 숫자 배열은 숫자 배열과 연결할 수 있습니다. 다양한 데이터 유형으로 배열을 만들려면 셀 배열을 사용해야합니다.

fruit = cell(3,1); 
for i =1:3 
    fruit{i} = strcat('orange',num2str(i)); 
end 
fruit 

이 원하는 출력을 생성한다 :

내가 원하는 데이터로 채우기 먼저 셀 배열로 과일을 선언 조언, 그리고 것, 첫 번째 질문에 대답합니다. 두 번째 질문에 대한

, 당신은 셀 어레이와 숫자 배열을 연결하려면, 먼저 같은 num2cell를 사용하여 셀 어레이로 변환해야하는 경우

N = [1 2;3 4;5 6]; 
FINAL = [num2cell(N),fruit] 

, 최종 당신은 FINAL {1,3} = orange1처럼 접근 할 수있는 9 셀의 배열이 될 것입니다. 셀에 컴팩트 코드를 작성하려면 두 가지 유용한 기능인 cellfun과 deal을 살펴 봐야합니다.

희망이 도움이됩니다.

+0

+1 당신이 나를 때리고, 더 나은 설명을하고, 당신이'cat' 기능없이 세포를 연결할 수 있다는 것을 몰랐습니다. – Pursuit

+0

Eheh, 첫 번째 게시물! 나도 몰랐다. 나는 그걸 우연히 발견했다 ... 나는 대용량 배열 계산을하기에는 속도가 매우 느리기 때문에 거의 사용하지 않는다. 다른 데이터 표현을 사용하는 것이 더 좋다 ... 건배! – Gabsha

+0

도움을 주셔서 대단히 감사드립니다. D – jacksonY

0
for x = 1:3 
    fruit = ['orange', num2str(x)]; 
    A{x,1} = fruit; 
end 

N = [1 2; 3 4; 5 6]; 
N_as_cell = num2cell(N); 

FINAL = cat(2, N_as_cell, A);