Can't get simple for loop to run

I've still not got the hang of loops! I have a 3667 x 1 double matrix (d1) and I have a 33 x 1 matrix (d2). All the values in the 33 x 1 matrix (d2) should correpsond to values in the 3667 x 1 matrix (d1). I want to loop throught each row of the the 33 x 1 matrix and get the index of the equivelant value in the 3667 x 1 matrix. I can do this without a loop using the following code using just one value from d2:
index_1=find(d1(:,1)==R1);
where R1 correpsonds to the integer value in the matrix d2 (e.g. d2(1,1))
However, when I try and put this in a loop the result ij is empty. The code seemd to run but I'm not getting the result that I get outside the loop.
size_d2=size(d2);
results=zeros(size(1,1),1);
for ii=d2(1):d2(end)
ij=find((d1(:,1))==ii);
results(ii)=ij;
end
Any advice on where I'm going wrong would be appreciated!
Thanks

Antworten (1)

Deepak Meena
Deepak Meena am 25 Sep. 2020

0 Stimmen

Hi Alex ,
I think you are defining "results " variable wrong. From my understanding you want to results variable to be similar size of as d2. so you should be doing this :
results=zeros(size_d2(1,1),1);
Rest of the code seems fine to me.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 22 Sep. 2020

Beantwortet:

am 25 Sep. 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by