MATLAB Answers

How can i reshape a matrix to my preferred dimension and discard the excess element

7 ビュー (過去 30 日間)
Cutie 2021 年 7 月 5 日
コメント済み: Cutie 2021 年 7 月 7 日
I have a signal whose size is 48640 but I want to reshape it using window size 512,1024,..etc but the
[signal,Fs] = audioread('moan1_@24.36sec.wav');
fl = 512 % window size
X_data2 = reshape (signal, fl, []) % i want a matrix whose row is equal to window size fl
  7 件のコメント
Cutie 2021 年 7 月 7 日
@Walter Roberson, thank you for the explanation. This is truly appreciated.



Walter Roberson
Walter Roberson 2021 年 7 月 5 日
X_data2 = buffer(signal(:,1), fl)
This will create columns from the first channel of signal, with each column being fl samples long. As many columns will be needed as necessary. If the signal is not an exact multiple of fl then the last column will be 0 padded.
This requires the Communications Systems Toolbox.
It is one of the utility functions that I think really should be moved to basic MATLAB.

その他の回答 (2 件)

Srijan Jain
Srijan Jain 2021 年 7 月 5 日
I understand that you are trying to remove the excess elements of a matrix. You may want to try:
childarray=parentarray(startrow:endrow, startcol:endcol);
Hope this helps
  1 件のコメント
Cutie 2021 年 7 月 6 日
Can please explain further. When I tried it, the row work okay but the column is giving error as follows:
childarray=signal2(1:fl, 1:3); % but with error index in postition 2 excees array bounds (must not exceed 1). When I make the col side 1:1, I has as 8192 x 1 matrix


Yongjian Feng
Yongjian Feng 2021 年 7 月 5 日
What is the original matrix you want to reshape? Is it signal?
If so, how about
reshaped = signal(1:fl, :)
  1 件のコメント
Cutie 2021 年 7 月 6 日
This only output an fl by 1 matrix.





Community Treasure Hunt

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

Start Hunting!

Translated by