reshape a matrix with a divisible of 10....
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Elysi Cochin
am 26 Feb. 2014
Kommentiert: Elysi Cochin
am 26 Feb. 2014
i wanted to reshape my a matrix of size 1*N into 10 rows N/10 columns... but when N is not divisible by 10 i get error... how can i rectify the error?? either pad it with zeros to get a number divisible by 10 or get the previous number divisible by 10....
that is if my matrix
A = 1 * 100
i need output B to be 10*10 output
but if A = 1*111....
i get error, so i want to convert
A to 1 * 120 and get B = 10*12 or
change A to 1*110 and get B = 10*11 new output....
please do reply me....
0 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 26 Feb. 2014
Bearbeitet: Andrei Bobrov
am 26 Feb. 2014
r = 10;
out = reshape([A(:);nan(mod(-numel(A),r),1)],r,[])
ADD
out = reshape(A(1:fix(numel(A)/r)*r),r,[])
2 Kommentare
Andrei Bobrov
am 26 Feb. 2014
This is a different solutions, for example:
A =randi(25,1,27)
r = 10;
out1 = reshape([A(:);nan(mod(-numel(A),r),1)],r,[]) % first variant
out2 = reshape(A(1:fix(numel(A)/r)*r),r,[]) % second variant
Weitere Antworten (3)
Azzi Abdelmalek
am 26 Feb. 2014
Bearbeitet: Azzi Abdelmalek
am 26 Feb. 2014
A=rand(87,1);
n=(10-mod(numel(A),10));
n=n*sign(n);
A(end+1:end+n)=0;
out=reshape(A,10,[])
%or
r=10
m=numel(A);
out=reshape([A;zeros(ceil(m/r)*r-m,1)],r,[])
0 Kommentare
Iain
am 26 Feb. 2014
To pad it with 0's:
if mod(numel(A),10)
A(ceil(numel(A)/10)*10) = 0;
end
B = reshape(A,10,[]);
To pad with NaNs...
if mod(numel(A),10)
A(end+1:ceil(numel(A)/10)*10) = NaN;
end
B = reshape(A,10,[]);
To use the previous divisible:
A((floor(numel(A)/10)*10+1):end) = [];
B = reshape(A,10,[]);
0 Kommentare
Anuj
am 26 Feb. 2014
Try this, its very simple-
n=10-mod(numel(A),10);
if n==10;
reshape(A,10,numel(A)/10)
else
A=padarray(A,[0,n],'post');
reshape(A,10,numel(A)/10)
end
Siehe auch
Kategorien
Mehr zu Specialized Power Systems 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!