string matrix navigation with character string

3 vues (au cours des 30 derniers jours)
Touts Touts
Touts Touts le 17 Juin 2022
Commenté : Walter Roberson le 23 Juin 2022
Hi; for my problem, I have a string matrix (DataSour) of size 3 in columns but strong in rows; for which I look to obtain a minimized matrix (DataFind) relative to a character string (ToAssign). Then I try to find the positions of the columns (ColPos) and rows (RowPos) where the character string is positioned.
DataSour = ["Do" "Ri" "Mi"; "AA" "VV" "Fa"; "SS" "BB" "Do"; "Do" "yy" "zz"]
ToAssign = "Do"
for results I have to find the minimized matrix
DataFind =
Do -- --
-- -- Do
Do -- --
and positions of columns
ColPos =
1
3
1
and positions of rows
RowPos =
1
3
4

Réponses (2)

Matt J
Matt J le 17 Juin 2022
Modifié(e) : Matt J le 17 Juin 2022
DataSour = ["Do" "Ri" "Mi"; "AA" "VV" "Fa"; "SS" "BB" "Do"; "Do" "yy" "zz"];
ToAssign = "Do";
[ColPos,RowPos]=find(DataSour'==ToAssign)
ColPos = 3×1
1 3 1
RowPos = 3×1
1 3 4
  4 commentaires
Ferial Assmani
Ferial Assmani le 17 Juin 2022
@ All ; It looks like my concern; I try to import my Excel matrix and retrieve the rows that contain the desired character string and otherwise retrieve the rows that do not contain the desired character string. Why it’s not working for me I have the R2016a version.
[~, ~, MYFile] = xlsread('MYFile.xlsx','Data','A2:D5');
MYFile(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),MYFile)) = {''};
DataSour = MYFile;
ToAssign = 'DO';
When I use
[RowPos, ColPos] = find(ismember(DataSour, ToAssign))
Error using cell/ismember (line 34)
Input A of class cell and input B of class char must be cell arrays of strings, unless one is a string.
When I use
[ColPos,RowPos]=find(DataSour'==ToAssign)
Undefined operator '==' for input arguments of type 'cell'.
Matt J
Matt J le 19 Juin 2022
Modifié(e) : Matt J le 19 Juin 2022
You cannot use my solution unless you have a recent Matlab version. If you have upgraded, then convert DataSour to a string array, like in your posted example.

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 17 Juin 2022
[RowPos, ColPos] = find(ismember(DataSour, ToAssign))
  8 commentaires
Ferial Assmani
Ferial Assmani le 19 Juin 2022
@Walter Roberson, plz, i got this error
Error using cell/ismember (line 34)
Input A of class cell and input B of class char must be cell arrays of strings, unless one is a string.
Walter Roberson
Walter Roberson le 23 Juin 2022
No, I mean
MYFile(cellfun(@(x) ~ischar(x), MYFile)) = {''};

Connectez-vous pour commenter.

Catégories

En savoir plus sur Cell Arrays dans Help Center et File Exchange

Produits


Version

R2010b

Community Treasure Hunt

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

Start Hunting!

Translated by