How can I convert a cell to a matrix ?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Anthony Cazin-Bourguignon
il 4 Nov 2020
Commentato: Ameer Hamza
il 4 Nov 2020
Hello, I have a table that I would like to change into a matrix as below.
I tried "cell2matrix" but it doesn't work and I really don't know how to do it. It's for a job and I am very grateful to the person who will help me.
Thank you for your time
Anthony

0 Commenti
Risposta accettata
Più risposte (3)
Ameer Hamza
il 4 Nov 2020
Modificato: Ameer Hamza
il 4 Nov 2020
If first matrix contains all combinations of row and columns in the order you mentioned,
C = [
1 1 1;
2 1 2;
3 1 3;
1 2 4;
2 2 5;
3 2 6;
1 3 7;
2 3 8;
3 3 9];
M = reshape(C(:,3), 3, 3)
For a general case, in which indexes in column 1 and 2 have an arbitrary order.
M = zeros(max(C(:,1)), max(C(:,2)));
idx = sub2ind(size(M), C(:,1), C(:,2));
M(idx) = C(:,3);
7 Commenti
Ameer Hamza
il 4 Nov 2020
Ok, I get it now. scatteredInterpolant seems suitable here:
x = unique([output{:,1}]);
y = unique([output{:,2}]);
[Xg, Yg] = ndgrid(x, y);
mdl = scatteredInterpolant([output{:,1}].', [output{:,2}].', [output{:,3}].');
M = mdl(Xg, Yg);
To see the relation between value of x, y and data column, run the following code
T = array2table(M, 'VariableNames', string(y));
T.Row = string(x);
Rik
il 4 Nov 2020
You need to use accumarray to create this. You can find examples in the documentation for that function:
doc accumarray
2 Commenti
Rik
il 4 Nov 2020
Your example only contained integer indices, while the picture of your actual data contains decimal values. You need to make sure you have a set of integer values, which you could do with unique:
x=[-3.53;-3.53;-4.53;-4.53];
y=[51.05;51.10;51.05;51.10];
z=rand(size(x));
[x_unique,~,x_int]=unique(x);
[y_unique,~,y_int]=unique(y);
subs=[x_int y_int];
data=accumarray(subs,z);
Steven Lord
il 4 Nov 2020
What specific type of variable are you using to store your data? If it's in a table array take a look at the unstack function. The first example on that documentation page looks very similar to your picture.
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

