Resizing an array - removing elements
조회 수: 12 (최근 30일)
이전 댓글 표시
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
Ahmad Kanzu Syauqi Firdaus
2018년 9월 3일
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]);
채택된 답변
Star Strider
2016년 1월 6일
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
Star Strider
2016년 1월 8일
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.
추가 답변 (1개)
Stephen23
2016년 1월 6일
편집: Stephen23
2016년 1월 6일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!