Use the transpose for your matrix and then apply find function to get the index for the actual matrix
How to switch the indexing order
16 次查看(过去 30 天)
显示 更早的评论
In matlab, the indexing for the find function numbers the matrix from top to bottom. However, for my code I need to run left to right. For exampe [1 ,2,3] etc.
Is there a different function I can use to achieve this?
采纳的回答
the cyclist
2023-6-15
There's probably no way that isn't somewhat awkward, but here is a function that will convert a column-major index (which is what MATLAB uses) to a row-major linear index.
This assumes a 2-dimensional array, does no error checking, was untested on anything other than simple cases. (For example, didn't try empty arrays, etc.)
% Example use
% Some random matrix
M = rand(3,5);
% Use the function to find the 4th element in the first row, using row-major linear indexing
colMajorToRowMajor(4,M)
function rowMajorLinearIndex = colMajorToRowMajor(colMajorLinearIndex,M)
% Get input size
[MR,MC] = size(M);
% Convert
[cwr,cwc] = ind2sub([MC,MR],colMajorLinearIndex);
rowMajorLinearIndex = sub2ind(fliplr([MC,MR]),cwc,cwr);
end
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!