MATLAB: I cant work out whick way to structure this code. Multiple functions with multiple inputs/outputs

multiple functions with multiple inputs/outputs

function [ fs, f0, d, t, y, call ] = CallingFunction()
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
end
function [ f0,fs,d ] = Funktion1 ( )
% This function reads in Duration, Fundamental & Sample frequencies
% Accepts inputs
f0 = input('Enter the Fundamental frequency, :');
fs = input('Enter the Sample frequency, :');
d = input('Enter the Duration, :');
end
function [ t, y ] = Funktion2( f0 , fs , d )
%UNTITLED4 Summary of this function goes here
% Creates Time vector & Sinusoid vector
t=0:1/fs:d;
y1=sin(2*pi*f0*t);
y2=sin(2*pi*2*f0*t);
y3=sin(2*pi*3*f0*t);
y=y1+y2+y3;
end
function [ ] = Funktion3( fs , t , y )
%%Plot & play results
% Read in decay parameters
K = input('Value of K; :');
%%Create exp decay fn
A=(K*exp(-1.5*t)).*sin(2*pi*0.65*t);
call=A.*y;
%%Play through sound card & plot
soundsc(call,fs)
plot(t,call)
end

Best Answer

Just guessing here, because I’m not certain what you’re doing.
Perhaps this will do what you want:
function [ fs, f0, d, t, y, call ] = CallingFunction()
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
[ f0,fs,d ] = Funktion1;
[ t, y ] = Funktion2( f0 , fs , d );
Funktion3( fs , t , y );
end
Also, define whatever you want your ‘call’ variable to be, somewhere in ‘CallingFunction’. If you don’t, it will throw an error that ‘call’ is unassigned.