How do I get these matrix dimensions to match using linspace?
1 次查看(过去 30 天)
显示 更早的评论
I am trying to write an audio algorithm to ramp up the amplitude of a .wav file but I am having problems getting getting the matrix dimensions to match in this line:
processed_waveform = input_waveform.*linspace(0, 1, length(input_waveform));
The error reads as follows:
Error using .*
Matrix dimensions must agree.
Error in Ex_1D (line 41)
processed_waveform = input_waveform.*linspace(0, 1, length(input_waveform));
I have tried using size() in place of length() but I still get the same issue. Any ideas? Thanks
0 个评论
采纳的回答
Star Strider
2015-10-18
Most audio files are column vectors, and linspace produces a row vector.
Try this:
processed_waveform = input_waveform.*linspace(0, 1, length(input_waveform))';
Transposing the linspace vector should make them compatible. If ‘input_waveform’ is a two-column matrix (two-channel sound file), the code becomes:
processed_waveform = input_waveform.*[linspace(0, 1, length(input_waveform))', linspace(0, 1, length(input_waveform))'];
2 个评论
dpb
2015-10-18
I've long thought (and made the suggestion at least once as enhancement request) TMW should enhance this error message to explicitly note the orientation mismatch as a possbility when size(OP1)==size(OP2).' as the error occurs so often and the present missive, while correct, clearly doesn't provide guidance enough in many (most?) cases...
Star Strider
2015-10-18
Allowing a size argument that would automatically orient and replicate the resulting vector would be helpful, but we’re not there yet.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Audio I/O and Waveform Generation 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!