I need to know what's the problem with this code

Hello I need to know what's the problem with this code
% tedata contain 20 cells
% trdata contain 60 cells
for j=1:length(tedata)
for i=1:length(trdata)
y=cell2mat(tedata(j));
x=cell2mat(trdata(i));
similarity = sqrt(sum((x - y) .^ 2));
if similarity>180
similarity=similarity-360;
elseif similarity<-180
similarity=similarity+360;
end
kk(i)=similarity;
end
[result indxofmin] =min(kk);
but it return the value of similarity at first step [similarity = sqrt(sum((x - y) .^ 2)); ] not after the condition

4 commentaires

Some observations...
for j=1:length(tedata)
y=cell2mat(tedata(j)); % move out of _i_ loop; invariant w/ i
for i=1:length(trdata)
x=cell2mat(trdata(i));
similarity=norm(x-y); % use builtin function
if similarity > 180
similarity=similarity-360;
elseif similarity < -180
similarity=similarity+360;
end
kk(i)=similarity;
end
[result indxofmin] =min(kk);
Your code is missing closing end for j loop; presume is at end but you're not saving the result kk for each j; instead overwriting each loop.
similarity = sqrt(sum((x-y).^ 2));
or, more succinctly,
similarity = norm(x-y);
...
elseif similarity < -180
similarity=similarity+360;
similarity can never be <0; the square operation ensures is always positive, so that condition is totally superfluous.
As for the other, depending on x,y values, it's quite possible that norm(x-y) is never >180 so the condition is never met.
#dpb
Thank you very much, things are clear now.
Another major problem with it is that there are not enough comments in it. That would not be acceptable in our company.
wisam kh
wisam kh le 10 Sep 2018
Ok thank you.

Réponses (0)

Cette question est clôturée.

Clôturé :

le 20 Août 2021

Community Treasure Hunt

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

Start Hunting!

Translated by