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

 채택된 답변

Oleg Komarov
Oleg Komarov 2011년 8월 4일
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

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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Convert Image Type에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by