How to prevent over-writing in my for loop?
조회 수: 3 (최근 30일)
이전 댓글 표시
My interpolation for loop keeps over-writing the last value, even though I assigned x2=zeros(N,2).
clear; clc;
Folder = cd;
N=100;
x2 = zeros(N, 2);
for k = 1:N;
Driftt = sprintf('Drift%d.out', k);
Reactt = sprintf('React%d.out', k);
matDrift = importdata(fullfile(Folder, Driftt));
matReact = importdata(fullfile(Folder, Reactt));
x1= matDrift(:,2);
y1= -sum(matReact(:,2:11),2);
[x3, ix] = unique(x1);
y3 = y1(ix);
[y2] = [500000, 5000000, 7000000, 8000000, 900000, 13000000, 14000000];
x2 = interp1(y3, x3, y2, 'linear')
end
댓글 수: 0
채택된 답변
Matt J
2017년 11월 12일
편집: Matt J
2017년 11월 12일
Your loop needs to provide an index into x2
x2(something)= interp1(y3, x3, y2, 'linear')
to tell it where to store things.
댓글 수: 3
Matt J
2017년 11월 12일
편집: Matt J
2017년 11월 12일
Well, if you don't provide an index, MATLAB assumes that you just want to replace the whole matrix with something else:
>> x2=zeros(4,2)
x2 =
0 0
0 0
0 0
0 0
>> x2=1
x2 =
1
Conversely, if you give an index, you will place the right hand side into some designated part of the array.
>> x2=zeros(4,2); x2(4,:)=[2,1]
x2 =
0 0
0 0
0 0
2 1
So, your job is to specify where in x2 you want the result of interp1(y3, x3, y2, 'linear') inserted.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!