transforming a script for a matrix to a cell array
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
a = randi(50,600,9);
mx = randi(50,60,1);
mn = randi(50,60,1);
b = reshape(a(:,7),10,[]).';
q = bsxfun(@minus,b,mx);
%q = bsxfun(@rdivide,q,mx-mn);
%q = reshape(q.',[],1);
How can I apply this code which has been designed for a matrix table to a cell array?
Imagine the following
a = { rand(6000,7); rand(3600,7); rand(600,7); };
mx = {randi(50,600,1); randi(360,60,1); randi(50,60,1)}
mn = {randi(50,600,1); randi(360,60,1); randi(50,60,1)}
12 Commenti
Risposta accettata
Stephen23
il 2 Dic 2014
Modificato: Stephen23
il 2 Dic 2014
It seems that you want to apply a function to multiple numeric arrays contained in several cell arrays. There are essentially two ways to achieve this:
- Use a loop over the length of the arrays.
- Use cellfun .
Note that a loop can be achieved in a script, whereas cellfun would (most likely) require a function to be defined. cellfun can be a tidy solution, as it allows local code to show intent by defining a complicated function elsewhere. In any case, the following code will apply that function to those cell arrays, using loops:
a = {rand(6000,7); rand(3600,7); rand(600,7)};
mx = {randi(50,600,1); randi(50,360,1); randi(50,60,1)};
mn = {randi(50,600,1); randi(50,360,1); randi(50,60,1)};
q = a;
for k = 1:numel(q)
b = reshape(a{k}(:,7),10,[]).';
b = bsxfun(@minus,b,mx{k});
b = bsxfun(@rdivide,b,mx{k}-mn{k});
q{k} = reshape(b.',[],1);
end
Note that this code includes several corrections to what you supplied above, as the dimensions of randi(360,60,1) will lead to an error. I also uncommented the last two lines of the algorithm, as these are required to match the function that you gave in an earlier question.
8 Commenti
Stephen23
il 2 Dic 2014
Glad to be able to help. I hope you feel more comfortable with loops and arrays now :)
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements 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!
