Size mismatch error when trying to find a row in an array that is the same as a variable vector.
1 回表示 (過去 30 日間)
古いコメントを表示
idx = find(all(waypoints == target, 2), 1);
So this is a line of code in a function of a simulink function block.
The array waypoints is just an array with two columns and any amount of rows.
I'm trying to find the index at which the [2 x 1] vector target is equal to a row within the waypoints array.
But when the simulation is run, it tells me there is a size mismatch where I first try to define idx. Surely they don't need to match as the purpose is just to find where one of waypoints rows are equal to target?
function targetnew = setwaypoint(d2w,target,accuracy)
waypoints = [100 150; 200 400; 175 275; 600 300]; % pre-defined waypoints (in the future imported as a large array from an external source.
if isempty(target)
target = waypoints(1,:); % initializes the first waypoint.
end
idx = find(all(waypoints == target, 2), 1); % find the first row that match
if isempty(idx) % no row found!
error('could not find target in the waypoints');
end
if d2w > accuracy
idx = idx + 1; % if target waypoint is reached, add one to index.
end
if idx > size(waypoints, 1) % attempt to avoid any issues if simulation time is greater than time taken to reach final waypoint.
targetnew = waypoints(end, :);
else
targetnew = waypoints(idx, :);
end
end
2 件のコメント
回答 (1 件)
Fangjun Jiang
2019 年 3 月 8 日
The problem is here.
If target is 1x2 and waypoints is nx2, you can't do waypoints==target
waypoints = [100 150; 200 400; 175 275; 600 300];
target=[]
if isempty(target)
target = waypoints(1,:); % initializes the first waypoint.
end
waypoints==target
4 件のコメント
Fangjun Jiang
2019 年 3 月 11 日
If you are using R2018b as indicated, you should have no error running this:
waypoints = [100 150; 200 400; 175 275; 600 300];
target=[200 400];
idx = find(~all(waypoints-target, 2), 1)
idx =
2
参考
カテゴリ
Help Center および File Exchange で Computer Vision with Simulink についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!