multiple area access in cells

2 vues (au cours des 30 derniers jours)
Bass Tea
Bass Tea le 30 Jan 2019
Commenté : Bass Tea le 30 Jan 2019
dear ladies and gentlemen,
i have got another question. if i have a cell of arrays, e.g. ...
>> D(:,1)
ans =
[3x3 double]
[3x3 double]
[3x3 double]
and every cell element (in this case arrays) containes double values like the first cell element does, ...
>> D{1}
ans =
0.118997681558377 0.340385726666133 0.751267059305653
0.498364051982143 0.585267750979777 0.255095115459269
0.959743958516081 0.223811939491137 0.505957051665142
what comprehensible gives same result as , ...
>> D{1,1}
well! and if have another cells of arrays, let us say e.q.: ...
A =
[3x3 double]
[3x3 double]
[3x3 double]
with arrays like this: ..
>> A{1}
ans =
6 5 2
8 1 8
9 1 2
how can i reference my cells to rewirte e.q. every element in cell D and its every first column with first column of A, and
while doing so at the best without a loop or an if.
first, i thought on the colon operator, but i cant handle it. instead of allocate cell element by element with ..
>> D{1}(:,1)=A{1}(:,1)
>> D{2}(:,1)=A{1}(:,1)
a.s.o.
i tried ...
>> D{:}(:,1)=A{1}(:,1)
and
>> D{1:3}(:,1)=A{1}(:,1)
without success.
can someone help me =) please
regards
  1 commentaire
madhan ravi
madhan ravi le 30 Jan 2019
attach the data as .mat file so that it's pretty clear how the cells are arranged

Connectez-vous pour commenter.

Réponse acceptée

Guillaume
Guillaume le 30 Jan 2019
If you want to keep your data as cell arrays you don't have a choice but to use an explicit loop:
for i = 1:numel(D)
D{i}(:, 1) = A{i}(:, 1);
end
However, since the matrices in your cell arrays are all the same size, you would be better off storing the whole lot as a 3D matrix. It's much easier to work with 3D matrices than cell arrays of 2D matrices. In particular, you could indeed do the copy in just one line
%convert cell array of 2D matrices into 3D matrix:
D = cat(3, D{:});
A = cat(3, A{:});
%replace 1st column of each page:
D(:, 1, :) = A(:, 1, :);
  1 commentaire
Bass Tea
Bass Tea le 30 Jan 2019
hey Guillaume,
i really thank you very much for your quick response. Both methods, those who you mentioned, impress me much. i'm liking the particular idea of "array-paper sheets", like presented right-hand sided in doc help of "cat", most of all.
have many thanks, i'm gonna' do a little trial-and-error now with that new knowledge. =)
regards
1.JPG

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by