Effacer les filtres
Effacer les filtres

How to switch the indexing order

15 vues (au cours des 30 derniers jours)
Maggie Chong
Maggie Chong le 15 Juin 2023
Déplacé(e) : VBBV le 15 Juin 2023
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?
  1 commentaire
VBBV
VBBV le 15 Juin 2023
Déplacé(e) : VBBV le 15 Juin 2023

Use the transpose for your matrix and then apply find function to get the index for the actual matrix

Connectez-vous pour commenter.

Réponse acceptée

the cyclist
the cyclist le 15 Juin 2023
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)
ans = 10
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

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by