Creating Matrix with nested loop values

Hello, I am looking for a solution with my problem storing the output of my nested loop into a matrix. The code works perfectly fine and gives me a row for every looped index. For example :
xm =
2 56 31
xm =
2 57 24.667
What i want:
All rows together in one Matrix. hours,minutes,seconds are double values format %f
zeit = [hours minutes seconds ];
houra=1;
minutea=1;
houre=1;
minutee=1;
for k=2:3
for n=1:60
houra=k-1;
minutea=n-1;
houre=k;
minutee=n;
x=(zeit(zeit(:,1)>=houra & zeit(:,1)<houre & zeit(:,2)>=minutea & zeit(:,2)<minutee ,:));
xm=mean(x);
end
end
I hope you can help me.

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 14 Apr. 2016

1 Stimme

[a,~,c] = unique(zeit(:,1:2),'rows');
xm = [a, accumarray(c,zeit(:,3),[],@mean)];

3 Kommentare

Peter Krainer
Peter Krainer am 2 Mai 2016
Hello, thanks for your help, it works fine for just the (:,3) value but i have a total of 12 i want to mean and store in the matrix.
Hi Peter! For zeit with size [m x 12]:
[m,n] = size(zeit);
[a,~,c] = unique(zeit(:,1:2),'rows');
[x,y] = ndgrid(c,1:n-2);
A = zeit(:,3:end);
xm = [a, accumarray([x(:),y(:)],A(:),[],@mean)];
Peter Krainer
Peter Krainer am 2 Mai 2016
WOW thank you very much!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jan
Jan am 14 Apr. 2016
Bearbeitet: Jan am 14 Apr. 2016

0 Stimmen

zeit = ???
size1 = 2 * 60;
xm = zeros(size1, 3);
ixm = 0;
for k = 2:3
hMatch = (zeit(zeit(:,1) >= ha & zeit(:,1) < he);
for n = 1:60
ha = k-1;
ma = n-1;
he = k;
me = n;
mMatch = (hMatch & zeit(:,2) >= ma & zeit(:,2) < me);
ixm = ixm + 1;
xm(ixm, :) = mean(zeit(hMatch & mMatch, :));
end
end

1 Kommentar

Peter Krainer
Peter Krainer am 2 Mai 2016
Thank you for your help very much, but i doesn t work for me.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by