replace long string of variables

3 views (last 30 days)
Hi,
I have a script like below. The problem is that I must to create until index50, how can I write the script more easier and faster?
index1= strcmp(a(:,1), 'mama') & strcmp(a(:,3), '1');
val1 = unique(index1);
val_unica1 = nnz(val1);
index2= strcmp(a(:,1), 'mama') & strcmp(a(:,3), '2');
val2 = unique(index2);
val_unica2 = nnz(val2);
index3= strcmp(a(:,1), 'mama') & strcmp(a(:,3), '3');
val3 = unique(index3);
val_unica3 = nnz(val3);
total= sum(val_unica1) + sum(val_unica2) + sum(val_unica3);
  2 Comments
Cristian Martin
Cristian Martin on 1 Jun 2022
Edited: Cristian Martin on 1 Jun 2022
Yes, because I want for the below matrix to set an edit text for counting a sum of unique entry for mama 1, mama2, mama3 and so on
a = {'mama', '5', '1';
'mama', '4', '1';
'mama', '6', '1';
'mama', '7', '2';
'mama', '7', '2';
'mama', '7', '1';
'mama', '7', '3';
'mama', '7', '3';
'mama', '8', '1'};
disp(total);
3

Sign in to comment.

Accepted Answer

Steven Lord
Steven Lord on 1 Jun 2022
a = {'mama', '5', '1';
'mama', '4', '1';
'mama', '6', '1';
'mama', '7', '2';
'mama', '7', '2';
'mama', '7', '1';
'mama', '7', '3';
'mama', '7', '3';
'mama', '8', '1'};
rowsWithMama = strcmp(a(:, 1), 'mama')
rowsWithMama = 9×1 logical array
1 1 1 1 1 1 1 1 1
rowsWith1 = strcmp(a(:, 3), '1')
rowsWith1 = 9×1 logical array
1 1 1 0 0 1 0 0 1
nnz(rowsWithMama & rowsWith1)
ans = 5
If you have multiple values you want to test for in column 3 consider using ismember.
rowsWith2Or3 = ismember(a(:, 3), {'2', '3'})
rowsWith2Or3 = 9×1 logical array
0 0 0 1 1 0 1 1 0
or, using string to make creation of the list of search terms easier by avoiding needing to manually create '2', '3', '4', ... '50':
s = string(2:3)
s = 1×2 string array
"2" "3"
rowsWith2Or3 = ismember(a(:, 3), s)
rowsWith2Or3 = 9×1 logical array
0 0 0 1 1 0 1 1 0
  1 Comment
Cristian Martin
Cristian Martin on 1 Jun 2022
Thank you for the valuable information!

Sign in to comment.

More Answers (0)

Products


Release

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by