Vectorizing Array -- Wrong Dimensions?

Hi all, I'm a native C programmer and am having a hard time understanding Matlab's behavior.
I have three arrays:
sample.currtargdist (2252 x 1)
sample.targloc (1 x 2552)
distance (6 x 2252)
I can't figure out why this code results in a 2252 x 2252 matrix:
for s = 1:setsize;
distance(s,:) = sqrt((sample.RIGHT_GAZE_X-loc(s).x).^2+(sample.RIGHT_GAZE_Y-loc(s).y).^2);
end
sample.currtargdist = distance(sample.targLoc,:);
When I try something like a '1' instead of ':', I just get the first column of the matrix. I want just the first row of the output matrix.

6 个评论

This is not clear, what is sample.RIGHT_GAZE_X-loc? what is the value of setsize?
it's a measure of eyegaze position. It's in a 1 x 2552 array. Set size is 6. I'm measuring the distance of eyegaze from items on a screen.
Which one is "the output matrix"?
sample.targcurrdist
sample.targloc is an index that can be used to tell which distance value to pull
What are sample.RIGHT_GAZE_X, sample.RIGHT_GAZE_Y, setsize, loc.x and loc.y? If they are variables, what sizes are they?
"this code results in a 2252 x 2252 matrix": which variable is the output?

请先登录,再进行评论。

 采纳的回答

I want just the first row of the output matrix.
Perhaps you mean this:
sample.currtargdist = distance(sample.targLoc(1), :);
If targLoc has the size 1 x 2552 and distance is 6x2552, then distance(targloc,:) is expected to be 2552x2552 - or a bug, if the elements of targloc exceed the values 1:6.

更多回答(1 个)

Probably, the value of setsize is 2252, or maybe in your code, you have pre-allocated the variable distance with zeros(2252,2252)

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by