Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

How should I generate a rectone from the following Matlab code

1 Ansicht (letzte 30 Tage)
Syed Izzatullah
Syed Izzatullah am 25 Jan. 2017
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
function S=recttone(F,FS,LEN,PHASE)
FS=8000;
S=recttone(440,FS,0.5,pi/4);
sound(0.9*S,FS);
frequency F, sampling frequency FS, Duration LEN in [sec]. PHASE is optional(phase shift). we can also use the following data.
  3 Kommentare
Walter Roberson
Walter Roberson am 25 Jan. 2017
Bearbeitet: Walter Roberson am 25 Jan. 2017
How would you generate a single period of a rectangle tone?
Jan
Jan am 25 Jan. 2017
@Syed Izzatullah: There are no "following data" in your question.

Antworten (2)

Soumya Saxena
Soumya Saxena am 27 Jan. 2017
Bearbeitet: Soumya Saxena am 27 Jan. 2017
To generate rectangular pulse, you may use the "rectangularPulse" function in symbolic Math Toolbox.
The following documentation has more details:
Rectangular waveforms can also be created using the " phased.RectangularWaveform" function in Phased Array System Toolbox.
In general, to create periodic pulse you can see the examples given here using the Signal Processing Toolbox:

Image Analyst
Image Analyst am 27 Jan. 2017
Bearbeitet: Image Analyst am 27 Jan. 2017
I don't know what rectone is. Looks like you're trying to call it recursively. If you just need to make a tone in a rectangular pulse and save it to a wav file, and play it, try this:
% Program to create a wave file with constant amplitude and pitch.
% Initialization / clean-up code.
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;
% Create the filename where we will save the waveform.
folder = pwd;
baseFileName = 'Test_Wave.wav';
fullFileName = fullfile(folder, baseFileName);
fprintf('Full File Name = %s\n', fullFileName);
% Set up the time axis:
Fs = 12000;
duration = 1; % seconds.
t = 1 : duration * Fs; % 2 seconds
% Set up the period (pitch, frequency):
T = 13; % Constant pitch if you use this.
% T = linspace(25, 8, length(t)); % Pitch changes if you use this.
% Create the maximum amplitude:
Amplitude = 32767 * ones(1, length(t));
% Zero out the first and last third to make a rectangular pulse
third = round(length(t) / 3);
Amplitude(1:third) = 0;
Amplitude(end-third:end) = 0;
% Construct the waveform:
y = int16(Amplitude .* sin(2.*pi.*t./T));
% y = abs(int16(Amplitude .* sin(2.*pi.*x./T)));
% Plot the waveform:
plot(t, y, 'b-');
title('Waveform', 'FontSize', fontSize);
xlabel('Time', 'FontSize', fontSize);
ylabel('Y', 'FontSize', fontSize);
grid on;
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
fprintf('Writing file %s...\n', fullFileName);
% Write the waveform to a file:
audiowrite(fullFileName, y, Fs);
% Play the sound as many times as the user wants.
playAgain = true;
counter = 1;
while playAgain
% Play the sound that we just created.
fprintf('Playing file %s %d times...\n', fullFileName, counter);
player = audioplayer(y, Fs);
play(player);
% Ask user if they want to play the sound again.
promptMessage = sprintf('You have played the sound %d times.\nDo you want to play the sound again?', counter);
titleBarCaption = 'Continue?';
button = questdlg(promptMessage, titleBarCaption, 'Yes', 'No', 'Yes');
if strcmpi(button, 'No')
playAgain = false;
break;
end
counter = counter + 1;
end
% Alert user that we are done.
message = sprintf('Done playing %s.\n', fullFileName);
fprintf('%s\n', message);
promptMessage = sprintf('Done playing %s.\nClick OK to close the window\nor Cancel to leave it up.', fullFileName);
titleBarCaption = 'Continue?';
button = questdlg(promptMessage, titleBarCaption, 'OK', 'Cancel', 'OK');
if strcmpi(button, 'OK')
close all; % Close down the figure.
end

Diese Frage ist geschlossen.

Tags

Noch keine Tags eingegeben.

Community Treasure Hunt

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

Start Hunting!

Translated by