나는 거대한 2 차원 희소 행렬을 생성하는 곳에서 시뮬레이션을 실행하므로 FIND 함수를 사용하여 인덱스가 0이 아닌 값만 저장합니다..mat 파일 행이나 열 단위 cellmatrix에 추가하는 방법
이제 for 루프의 각 반복에 대해 이러한 행렬을 생성하고 모든 길이가 다르기 때문에 셀 배열을 사용하여 이러한 구성을 저장합니다. 그러나 대규모 시뮬레이션의 경우 셀 어레이의 압축 된 형식조차도 메모리 한계를 넘기 때문에 코드를 실행하는 동안 이러한 셀 어레이를 쓰고 싶습니다. 즉, 각 반복마다 기존 요소의 매트 파일에 새 요소를 추가하십시오.
for n=1:10
A=rand(5);
[i,j,vals]=find(A);
data={[i,j,vals]};
save('data','data','-append');
end
여기 내 최종 목표는 "데이터"의 요소 수 (10)이다 매트 파일을 가지고하는 것입니다하지만 난 때문에 메모리 문제로 내가 데이터를 생성 할 루프의 외부 저장하지 못할 {N} 그것을 세로로 성장하는 방식으로 덧붙인다. 결국 {10} 데이터를 제공합니다.
MATFILE을 사용하려고했으나 {}이 (가) 작동하지 않아 셀 배열이 작동하지 않는다는 오류가 발생했습니다.
당신은save
와 기존 변수에 데이터를 추가 할 수 없습니다, 니틴
. 내가 당신의 질문을 해결하는 방법을 모르겠지만 나는 당신에게 왜 당신이 그것을하려는 의도인지 물어볼 것입니다. 변수를 저장할 때 그 문제가 발생하면 장래에로드 할 때 변수가 생깁니다. 그러므로 당신은 그것을 피해야합니다. Luis Mendo가 제안한대로 저장하지 않으시겠습니까? – ASantosRibeiro
MATFILE 함수 (셀 어레이에서 작동하는 경우)를 .mat 파일의 일부분으로 작성하면로드하지 않고도 파일의 일부를 읽을 수 있습니다. 따라서 MATFILE은 셀 어레이가 작동하는 경우 셀 어레이로 작업해야합니다. – nitin
왜 자신의 롤링 대신 MATLAB의 원시 스파 스 형식을 사용하지 않는지 궁금합니다. – nhowe