How to make array in matlab ( how to inisialisasi array )

 Accepted Answer

Preallocation of an array is usually done with the zeros function:
B = zeros(n)
B = zeros(m,n)
B = zeros([m n])
B = zeros(m,n,p,...)
B = zeros([m n p ...])
where m,n,p,... express the size for the 1st,2nd,3rd,...nth dimension.
If you're not looking for preallocation then your answer is too generic.
Something else I can think of is a generation of a random matrix, see rand and related functions.
All of the basic are well covered, wiht many examples in the getting started guide
EDIT
obj=VideoReader(video);
% (start)
%akhir deklarasi gambar yang ada di axes
numFrames = obj.NumberOfFrames;
waktu = obj.Duration;
iterasi = numFrames/waktu;
vidHeight = obj.Height;
vidWidth = obj.Width;
disp(numFrames);
a = length(numFrames);
frames = zeros(vidHeight,vidWidth,iterasi);
c = 0;
if(~isempty(get(handles.nmvideo,'String')))
try
for n = 1:iterasi:numFrames
c = c+1;
frames(:,:,c) = read(obj,n);
h = axes(handles.axes1);
imshow(frames(:,:,c));
end
catch
msgbox('Codec AVI tidak didukung atau Corupted file AVI','Error','error');
return
end
else
msgbox('Anda harus memilih video terlebih dahulu','Error','error');
end

10 Comments

thx oleg komarov, i have problem about my program... maybe can you help me, i want to make array for inisialisasi frame 1 until frame 32 .... this is my code, maybe you can fix it ... :
obj=VideoReader(video);
% (start)
global frame1;global frame2;global frame3;global frame4;global frame5;
global frame6;global frame7;global frame8;global frame9;global frame10;
global frame11;global frame12;global frame13;global frame14;global frame15;
global frame16;global frame17;global frame18;global frame19;global frame20;
global frame21;global frame22;global frame23;global frame24;global frame25;
global frame26;global frame27;global frame28;global frame29;global frame30;
global frame31;global frame32;
%akhir deklarasi gambar yang ada di axes
numFrames=obj.NumberOfFrames;
waktu=obj.Duration;
iterasi=numFrames/waktu;
vidHeight = obj.Height;
vidWidth = obj.Width;
disp(numFrames);
a=length(numFrames);
disp(a);
if(~isempty(get(handles.nmvideo,'String')))
try
for n = 1:iterasi:numFrames
frame1=read(obj,n);
axes(handles.axes1);
imshow(frame1);
end
,enam);
catch
msgbox('Codec AVI tidak didukung atau Corupted file AVI','Error','error');
return;
end
else
msgbox('Anda harus memilih video terlebih dahulu','Error','error');
end
Please post the correct code in your original message and format it with the {} button.
,enam);
Is definitely an uncomplete line.
Drop the global part, then preallocate:
frames = zeros(vidHeight,vidWidth,iterasi);
c = 0;
Inside the loop
c = c+1;
frame(:,:,c) = read(...)
oleg komarov, i have question , in "frames = zeros(vidHeight,vidWidth,iterasi); " ... is it frames or frame? why in the behind oh your code is frame not frames? ( "frame(:,:,c) = read(...)")... and if i want to display the object, " imshow () " what? imshow (frame) ? or imshow (frames) ?
Sorry just a typo. Call it however you like it, it's the same array.
To display:
imshow(frames(:,:,c))
hhhmmm oleg komarov... i had try it,,, but i can't ... :( ... maybe i must study hard for understand it ...
frames its a variable, oleg ?
See my edit, post error messages and|or unexpected behaviour.
hhhhhmmmmmmmmmmmm...............
Yes, frames is a variable.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!