在向量列Matlab中查找特定字符串

时间:2014-01-23 16:15:25

标签: string matlab vector indexing octave

在我的计划中,我需要询问用户一个字符串(例如:'C4'),然后获取对应的索引到以下向量

上的字符串

标签= [ 'C2'; 'C#2'; 'D2'; 'd#2'; 'E2'; 'F2'; 'F#2'; 'G2'; 'G#2'; 'A2'; 'A#2'; 'B2'; 'C3'; 'C#3'; 'D3'; 'd#3'; 'E3'; 'F3'; 'F#3';'G3 ';' G#3 ';' A3 ';' A#3 ';' B3 ';' C4 ';' C#4 ';' D4 ';' d#4 ';' E4 ';' F4' ; 'F#4'; 'G4'; 'G#4'; 'A4'; 'A#4'; 'B4'; 'C5'; 'C#5'; 'D5'; 'd#5'; 'E5'; 'F5'; 'F#5'; 'G5'; 'G#5'; 'A5'; 'A#5'; 'B5'];

要求字符串很简单,使用输入并且它在八度音程上工作,但要找到索引我无法使其工作。我尝试使用 find,find(ismember()以及 for 循环,但似乎没有任何效果。 感谢帮助 感谢。

1 个答案:

答案 0 :(得分:1)

使用strcmp(注意labels应该是一个单元格数组,因为字符串的长度不同):

labels = {'C2';'C#2';'D2';'D#2';'E2';'F2';'F#2';'G2';'G#2';'A2';'A#2';'B2';'C3';'C#3';'D3';'D#3';'E3';'F3';'F#3';'G3';'G#3';'A3';'A#3';'B3';'C4';'C#4';'D4';'D#4';'E4';'F4';'F#4';'G4';'G#4';'A4';'A#4';'B4';'C5';'C#5';'D5';'D#5';'E5';'F5';'F#5';'G5';'G#5';'A5';'A#5';'B5'};
str = 'C4';
index = find(strcmp(str,labels));

如果案件不重要,您可以使用strcmpi代替strcmp