Reshaping (M,N)-matrix to (M,1)-matrix

5 Ansichten (letzte 30 Tage)
Jonathan
Jonathan am 8 Nov. 2013
Kommentiert: Jos (10584) am 8 Nov. 2013
Hello everyone,
I have a matrix, for example:
A = [1, 2, 3;
4, 5, 6;
7, 8, 9]
and now I want to create a matrix:
A = [123;
456;
789]
Does anybody know how I can do this efficiently?
(I need to do this 62.000 times for my matrix)

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 8 Nov. 2013
Bearbeitet: Andrei Bobrov am 8 Nov. 2013
z = floor(log10(A)+1);
z(isinf(z)) = 1;
ex = fliplr(cumsum([zeros(size(A,1),1), fliplr(z(:,2:end))],2));
out = sum(A.*10.^ex,2);
eg:
> A =[14 10 3 16
12 0 10 18
3 11 14 7
9 13 0 20];
> z = floor(log10(A)+1);
> z(isinf(z)) = 1;
> ex = fliplr(cumsum([zeros(size(A,1),1), fliplr(z(:,2:end))],2));
> out = sum(A.*10.^ex,2)
out =
1410316
1201018
311147
913020
  3 Kommentare
Jonathan
Jonathan am 8 Nov. 2013
Only one small problem with this:
It adds zeroes to the end of my numbers and I would like that not to happen since my numbers are timestamps. Do you know how I can stop Matlab from adding those extra zeroes?
Thanks in advance!
Andrei Bobrov
Andrei Bobrov am 8 Nov. 2013
I corrected.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Jos (10584)
Jos (10584) am 8 Nov. 2013
Another trick using strings:
A = [1 2 3 ; 10 11 12 ; 90 0 99]
B = str2num(sprintf([repmat('%d',1,size(A,2)) ' '],A.')).'
  2 Kommentare
Andrei Bobrov
Andrei Bobrov am 8 Nov. 2013
+1
Jos (10584)
Jos (10584) am 8 Nov. 2013
Note that you can play around with the "%d". For instance, you can use "%02d" so that a single digit number will be have a leading zero.

Melden Sie sich an, um zu kommentieren.


Simon
Simon am 8 Nov. 2013
Bearbeitet: Simon am 8 Nov. 2013
Hi!
So your resulting matrix is a vector. right?
Try this
mat10 = ones(size(A, 1), 1) * 10.^((size(A, 2)-1):-1:0);
sum(A .* mat10, 2)
This is applicable for matrices of any size.
In string form
str2num(char(regexprep(cellstr(num2str(A)), ' ', '')))

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help 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