Resizing an array - removing elements
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
S
il 6 Gen 2016
Commentato: Ahmad Kanzu Syauqi Firdaus
il 3 Set 2018
I have an array of data, in this case 61 rows long. I need to reshape this into 3s - LSB1 = reshape(LSB,3,[]); but as 61 isn't divisible by 3, it wont work.
I want to be able to remove the last value of from the vector in this case, via an if statement (sometimes maybe to remove the last 2 values if there were 62 rows instead) i.e. an if statement to check divisibility by 3 and then to remove the correct number of elements from the end of the array.
Thank you
1 Commento
Ahmad Kanzu Syauqi Firdaus
il 3 Set 2018
you can also use imresize, especially when you want to decrease array dimension without changing array content generally. example:
X=rand(105,1); M=61; Xnew=imresize(X,[M,1]);
Risposta accettata
Star Strider
il 6 Gen 2016
If you only want 60 rows in your array, just redefine a new array to have 60 rows:
LSB = rand(61,1); % Create Data
LSBnew = LSB(1:60,:);
LSB1 = reshape(LSBnew, [], 3);
6 Commenti
Star Strider
il 8 Gen 2016
My pleasure!
Since you are starting with a column vector, reverse the last two arguments in reshape and transpose the result:
x = [1:9]';
y = reshape(x, 3, [])';
This should do what you want.
Più risposte (1)
Stephen23
il 6 Gen 2016
Modificato: Stephen23
il 6 Gen 2016
Here is an example showing how this can be done automatically:
>> X = rand(4,3); % 4*3 = 12, not divisible by 5
>> R = 5;
>> reshape(X(1:end-mod(numel(X),R)),R,[])
ans =
0.79221 0.93399
0.95949 0.67874
0.65574 0.75774
0.035712 0.74313
0.84913 0.39223
0 Commenti
Vedere anche
Categorie
Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!