텍스트 파일의 데이터는이 (공백으로 구분 된 문자열)과 같은 경우
x1 x2 x3 ...
사용 셀 배열로 문자열을 읽을 수 TEXTSCAN과 같이 :
fid = fopen('file.txt','r');
A = textscan(fid,'%s');
fclose(fid);
A = A{:};
은 문자열을 셀 배열에 저장합니다 : { 'x1'; 'x2'; 'x3'; ...}. 이제, 이러한 문자열 중 하나에서 변수를 만들고 그 값을 할당하기 위해, 나는 ASSIGNIN 사용합니다 :
assignin('base',A{1},[1 2; 1 2]);
이 기본 작업 영역에서 변수 1 개를 생성하고 그것에게 값을 할당 [1 2; 1 2]. 첫 번째 인수는 '기본'또는 '호출자'로 MATLAB 기본 작업 영역이나 호출자 함수의 작업 영역에 변수를 만들 수 있습니다. A의 각 문자열 이름에 대해이 작업을 반복하여 원하는 모든 값을 부여합니다.
대체 옵션은 :
이 내가 위에서 준 것과 다른 답변입니다. 위의 답변은 귀하가 귀하의 질문에서 제기 한 특정 문제를 다룹니다. 이 대답은 잠재적으로 문제에 대해 설명하는 방식대로 일을 피할 수있는 완전히 다른 옵션을 제공하며 희망 사항대로하면 더 쉽게 작업을 수행 할 수 있습니다.
문제를 이해하면 기본적으로 256 2 x 2 행렬을 가져오고, 무작위로 30 개를 선택하려고합니다. 이 2x2 행렬은 각각 자신의 변수 (x1 to x256)에 저장되어있는 것처럼 들립니다. 대신에, 나는 3-D 배열 중 하나로 하나의 변수에 모두 256 행렬을 저장하는 제안 :
xArray = zeros(2,2,256); % Initialize all matrices as [0 0; 0 0]
xArray(:,:,1) = [1 1; 2 2]; % This enters a value for the first matrix
또는 셀 어레이 :
xArray = cell(1,256); % Initializes an empty array of cells
xArray{1} = [1 1; 2 2]; % Enters a value for the first matrix
먼저 모든 값을 초기화해야합니다. 당신은 무작위로 (30 개) 값을 선택하려면 다음, 당신은 다음 RANDPERM를 사용하여 3-D 배열의 세 번째 차원 또는 셀 어레이의 순서 중 하나의 순서를 무작위 수 있습니다
이
startOrder = 1:256; % The default order of the matrices
index = randperm(256); % Randomly order the numbers 1 to 256
xArray = xArray(:,:,index); % For a 3-d array
xArray = xArray(index); % For a cell array
가
이 그런 다음 첫 번째 사용 (대신에 당신이 예전처럼 개별 변수의) 귀하의 계산 xArray30 개 항목 :
x = xArray(:,:,1); % Puts the first matrix from the 3-D array in x
x = xArray{1}; % Puts the first matrix from the cell array in x
당신은 매트릭스의 새로운 무작위 배열을 생성 유지하는 RANDPERM의 사용을 계속 반복 할 수 있습니다. 당신에게 매트릭스가 있던 원래의 위치를 알려줍니다 의
이제 startOrder = startOrder(index);
항목 startOrder : 당신이 원래의 행렬이 사용중인 추적해야하는 경우, 당신은 당신이 xArray을 무작위 후이 줄을 추가해야 예를 들어, startOrder의 첫 번째 배열 항목이 40 인 경우 xArray의 첫 번째 위치에있는 행렬은 원래 xArray으로 초기화했을 때 입력 한 40 번째 행렬이었습니다.
희망이 도움이됩니다.
텍스트 파일에 변수 이름 만 저장합니까? 아니면 해당 변수에 할당 할 데이터도 저장합니까? – gnovice
이것은 매우 혼란스럽고 복잡한 문제처럼 들립니다. 이 모든 것이 사용되는 큰 응용 프로그램에 대해 자세히 설명해 주시겠습니까? 나는 파일에서 변수 이름을 읽는 것보다는 .mt 파일을 사용하는 것보다 더 쉽게 문제를 처리 할 수있는 방법이 있다는 생각이 듭니다. – gnovice