# Assigning columns of matrix to strings.

24 views (last 30 days)
Hello everyone
I have following matrix which have nums and I have stored strings in another.
Name={'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' };
Data=[ 1 2 3 4 5 6 7 8 9 10 11
12 13 14 15 16 17 18 19 20 21 22
23 24 25 26 27 28 29 30 31 32 33];
Number of rows and columns can vary but number of strings will remain same as thr number of columns in Data matrix
I want to assign column matrix to corresponding strings
like:
a = [1; 12; 23]
b = [2; 13; 24]
..... and so on
Karanvir singh Sohal on 6 Apr 2021
My variables doesn't named as 'a' 'b'.... in my orignal code.
This is just an example.

Stephen Cobeldick on 6 Apr 2021
Naming variables dynamically is one way that beginners force themselves into writing slow, complex, buggy code:
Instead of doing that, you can write simple and efficient code by creating a structure:
Name={'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' };
Data=[ 1 2 3 4 5 6 7 8 9 10 11
12 13 14 15 16 17 18 19 20 21 22
23 24 25 26 27 28 29 30 31 32 33];
S = cell2struct(num2cell(Data,1),Name,2)
S = struct with fields:
a: [3×1 double] b: [3×1 double] c: [3×1 double] d: [3×1 double] e: [3×1 double] f: [3×1 double] g: [3×1 double] h: [3×1 double] i: [3×1 double] j: [3×1 double] k: [3×1 double]
S.a
ans = 3×1
1 12 23
S.b
ans = 3×1
2 13 24
Karanvir singh Sohal on 6 Apr 2021
@Stephen Cobeldick saved myself from code refactoring :)
figured out the error and possible solution for that.
Thanks once again.