I want to plot my results individually under each other like a row and not a continues impulse response . Something isn't correct when i try it, Can someone help please?
7 views (last 30 days)
Show older comments
x = zeros(1, 20000);
x(1 : 4000 : 20000);
xresh = reshapex, 4000, 5);
So every 4000fs i want to plotted graph?
0 Comments
Accepted Answer
Star Strider
on 18 Jan 2019
I am not certain what you want.
Try this:
x = linspace(0, 20000, 20000)'; % Create Column Vector
y = sin(x*pi/500); % Create Data
xresh = reshape(x, 4000, 5);
yresh = reshape(y, 4000, 5);
yresh = bsxfun(@plus, yresh, (0:2:2*(size(yresh,2)-1))); % Add Offsets
figure
plot(xresh, yresh)
grid
Experiment to get your desired result.
9 Comments
Star Strider
on 22 Jan 2019
As always, my pleasure.
Yes. You can probably make that dynamic by doing something like:
xresh = reshape(x, fix(x/5), 5);
However, you need to choose a recording tiime and sampling frequency that will produce a value for the length of your recorded sound vector that is an integer multiple of the number of segments you want. The reshape function will fail otherwise.
More Answers (2)
codefanta
on 23 Jan 2019
3 Comments
Star Strider
on 27 Jan 2019
As always, my pleasure.
That bsxfun (link) call multiplies each column of ‘yresh’ by the corresponding element of the ‘( 0 : size(yresh,2 ) -1) ) * 2’ vector. That vector is equivalent to ‘[0, 2, 4, 6, 8]’. The purpose is to separate the columns by multiples of 2. Since the sound vectors are limited to a magnitude of ±1, this guarantees that they will be separated, and not overlap in the plot.
See Also
Categories
Find more on Frequency Transformations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!