How to Modify Entries in Cell

4 vues (au cours des 30 derniers jours)
itend
itend le 13 Juin 2017
Modifié(e) : James Tursa le 13 Juin 2017
Hello,
I would greatly appreciate any/all help with this issue:
I have a 18 x 1 cell array. Each cell in this array contains an (1024 x 1024 x 50 , value = double) matrix. Thus, there are a total of 18 of these matrices, each one stored in a separate cell.
I would like to modify each of the matrices by cutting out the last 2 "frames" --> producing a total of 18 (1024 x 1024 x 48) matrices, each one stored in a separate cell.
Please help! Thanks :)

Réponse acceptée

James Tursa
James Tursa le 13 Juin 2017
result = cellfun(@(x)x(:,:,1:end-2),your_cell_array,'uni',false);
  2 commentaires
itend
itend le 13 Juin 2017
Modifié(e) : itend le 13 Juin 2017
Fantastic!
Many thanks :)
Quick question, what is the @(x)x doing within the context of this line of code? I can understand the rest of it.
James Tursa
James Tursa le 13 Juin 2017
Modifié(e) : James Tursa le 13 Juin 2017
@(x)x(:,:,1:end-2) creates an anonymous function on the fly. It takes an input x and returns a truncated version of x with the last two pages removed. E.g.,
>> y = reshape(1:24,2,3,4)
y(:,:,1) =
1 3 5
2 4 6
y(:,:,2) =
7 9 11
8 10 12
y(:,:,3) =
13 15 17
14 16 18
y(:,:,4) =
19 21 23
20 22 24
>> f = @(x)x(:,:,1:end-2)
f =
@(x)x(:,:,1:end-2)
>> f(y)
ans(:,:,1) =
1 3 5
2 4 6
ans(:,:,2) =
7 9 11
8 10 12

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by