Struct data assignment has error

1 visualización (últimos 30 días)
shawin
shawin el 16 de Dic. de 2016
Comentada: Adam el 16 de Dic. de 2016
am trying to calculate a distance for struct data type. The distance method is:
function ssd=distances(x, c)
m=size(x,1);
ssd = zeros(m, k);
k=size(c,1);
for i= 1:k
z = bsxfun(@minus,x, c(i,:));
ssd(:, i) = sqrt(sum(z.^2, 2));
end
end
I have c which is a random number produced from the formula below:
for i=1:20
pop(i).Position=unifrnd(2,2,4);
pop(i).dist=distances(data,pop(i).Position);
end
I have c which is a random number produced from the formula below:
for i=1:20
pop(i).Position=unifrnd(2,2,4);
pop(i).dist=distances(data,pop(i).Position);
end
x=data is 100x2.
The issue is when I call the distance method it does not accept the passing argument. pop(i).dist=distances(data,pop(i).Position);
the error is :
Non-singleton dimensions of the two input arrays must match each other. Error in distances (line 8) z = bsxfun(@minus,x, c(i,:));
  5 comentarios
shawin
shawin el 16 de Dic. de 2016
Editada: shawin el 16 de Dic. de 2016
@Adam,the data is 2 Dimension and it is fixed. now we have c : is 1x4 and the only option that i have is convert 1x4 to 2x2 because this is the nature of the algorithm , my issue is how can i produce the pop(i).position= 2x2 ? instead of 1x4.
i have put the error : Non-singleton dimensions of the two input arrays must match each other. Error in distances (line 8) z = bsxfun(@minus,x, c(i,:));
Adam
Adam el 16 de Dic. de 2016
pop(i).Position= reshape( unifrnd(2,2,4), [2 2] );

Iniciar sesión para comentar.

Respuestas (1)

KSSV
KSSV el 16 de Dic. de 2016
Editada: KSSV el 16 de Dic. de 2016
Try
pop(i).dist=distances(data,pop(i).Position);
Instead of
pop(i).dist=distances(x= data,pop(i).Position=c);
Also in the function, distances copy initilaize ssd after getting k. What does this mean?
ssd(:,i) = sqrt(z.^2,2);
sqrt takes only one input. sqrt(z.^2); But it has no meaning, in squaring and finding the square root. Chekc the initilaization of ssd, it will throw error.
  2 comentarios
shawin
shawin el 16 de Dic. de 2016
Editada: shawin el 16 de Dic. de 2016
@ KSSV Yes , I just put (x= data,pop(i).Position=c) for explanation. sorry ssd is : ssd(:, i) = sqrt(sum(z.^2, 2));
KSSV
KSSV el 16 de Dic. de 2016
Consider the other comments....you have to change your function distances

Iniciar sesión para comentar.

Categorías

Más información sobre Computer Vision with Simulink en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by