Struct data assignment has error
1 view (last 30 days)
Show older comments
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 Comments
Answers (1)
KSSV
on 16 Dec 2016
Edited: KSSV
on 16 Dec 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 Comments
See Also
Categories
Find more on Computer Vision with Simulink in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!