Azzera filtri
Azzera filtri

I want to be able to preallocate multiple iterations of a matrix inside a for loop i.e. matrix(cou​nt)=zeros(​L:1), matlab keeps telling me dimensions don't match. Is there a syntax way to do this? I was thinking maybe change to an if else if.....

2 visualizzazioni (ultimi 30 giorni)
if true
% code
end
Fs=2000;
nBits=8;
nChannel=1;
devID=1;
L=4000;
disp('press 1 for training dictionary')
result=input(':');
if result==1
count=input('number of refernce files to make(max number 5): ')
if count>5
disp('I told you not to go higher than 5!!!')
else
dictionmatrix1=zeros(L:1);<---I want to preallocate based on the count
dictionmatrix2=zeros(L:1);
dictionmatrix3=zeros(L:1);
dictionmatrix4=zeros(L:1);
dictionmatrix5=zeros(L:1);
end
for count=n:-1:1
ISAC=audiorecorder(Fs,nBits,nChannel,devID);
disp('Please makes sure to speak clearly and at the same distance from the microphone')
disp('for all reference samples. Recording in....')
for time=3:-1:0
x=time
pause(1);
disp(x);
end
disp('Start Recording');
recordblocking(ISAC,2);
disp('Processing');
testarray=getaudiodata(ISAC);
a=zeros(L:1);
a(1:L)=testarray(1:L);
dictionmatrix(count)=a;%<------I want to save to the preallocated matrix
end end
if true
% code
end

Risposta accettata

Sagar Damle
Sagar Damle il 18 Lug 2014
If you want to create 5 vectors of the same size,instead of
count=5
for n=count:-1:1
dictionmatrix{n}=zeros(L:1)
end
you can use
dictionmatrix = zeros(L,1,count)
where you can refer to matrix3 as a whole by -
dictionmatrix(:,:,3).
If you want to refer 4th element of 2nd matrix,then use -
dictionmatrix(4,1,2)

Più risposte (0)

Categorie

Scopri di più su Get Started with MATLAB in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by