How to add values into Matlab matrix and not overwrite it
조회 수: 11 (최근 30일)
이전 댓글 표시
I have to insert values from a for loop into the matrix, but the values are all the time getting overwritten, so only last values are added into the matrix. What is the way to add every value to the matrix inside a for loop without overwriting?
My code is this:
%reading the file
list = fopen('intervals.txt','r');
C=cell(size(list))
for k=1:length(list)
content = fgets(list(k))
d= strsplit(content,',')
for n=1:length(d) % d contains 25 elements
B = zeros(n,1); % preallocate, results output
y=d{n}
z= strsplit(y,' ')
start=z{1}
stop=z{2}
start1 = str2num(start)
stop1 = str2num(stop)
B = [start1,stop1] %write to the matrix
end
댓글 수: 0
채택된 답변
Rahul Kalampattel
2017년 2월 18일
편집: Rahul Kalampattel
2017년 2월 18일
You're overwriting the contents of B twice in each iteration of your for loop:
B = zeros(n,1); % preallocate, results output
B = [start1,stop1] %write to the matrix
The size of B is also changing each iteration since n is increasing, which defeats the purpose of preallocating memory.
Start by preallocating outside of the for loop, using the final dimensions you think the matrix will have. Inside the for loop, assign elements to a row/column of B. I'm guessing from your code that you want B to be a 25x2 matrix, in which case the following should work:
L = length(d);
B = zeros(L,2); % preallocate, results output
for n=1:L % d contains 25 elements
y=d{n}
z= strsplit(y,' ')
start=z{1}
stop=z{2}
start1 = str2num(start)
stop1 = str2num(stop)
B(i,:) = [start1,stop1] %write to the matrix
end
(Also your for loop is missing an end)
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!