include all rows matrix in []

3 views (last 30 days)
piero
piero on 5 Jun 2023
Commented: Walter Roberson on 5 Jun 2023
>> size(z)
ans =
5668 73
BB=[z(:,1),z(:,2),z(:,3)....z(:,73]
i need in [] include all rows z
how can i do it?
  2 Comments
Paul
Paul on 5 Jun 2023
Are you sure the problem is stated correctly? As written, BB will be the same as z.
Here's a small example:
z = rand(2,3)
z = 2×3
0.0201 0.5622 0.2440 0.3879 0.1390 0.2752
BB = [z(:,1),z(:,2),z(:,3)]
BB = 2×3
0.0201 0.5622 0.2440 0.3879 0.1390 0.2752
piero
piero on 5 Jun 2023
Edited: piero on 5 Jun 2023
ok..i tried to transfer my problem to a wrong example..I post my main problem hoping to make me understand with few examples
Sis is a struct
>> size(Sis)
ans =
1 73
I want to add field Matrix (z)
size(z)
ans =
5668 73
[Sis.h]=deal(z)
I can synthesize it with this code
for i=1:length(Sis)
Sis(i).New=F(:,i);
end
(but i want to avoid cicle for)

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 5 Jun 2023
zc = num2cell(z,1); %1 --> preserve first dimension
[Sis.h] = zc{:}; %or [Sis.h] = deal(zc{:});

More Answers (1)

Paul
Paul on 5 Jun 2023
Edited: Paul on 5 Jun 2023
One way ....
Create example data
Sis.a = 1;
Sis = repmat(Sis,73,1);
z = rand(5668,73);
The code
[Sis.z] = cell2struct(num2cell(z,1),'z',1).z;
Verify
isequal([Sis.z],z)
ans = logical
1
  1 Comment
Walter Roberson
Walter Roberson on 5 Jun 2023
Sis.a = 1;
Sis = repmat(Sis,73,1);
z = rand(5668,73);
[Sis.z] = struct('z', num2cell(z,1)).z;
isequal([Sis.z],z)
ans = logical
1

Sign in to comment.

Categories

Find more on Animation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!