vertical concatenate strings in msgbox
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello,I cant understand why this vertical concatenation of strings isn't working.
v = VideoReader(filename); % Create Videoreader object
%Get info from video
D=['Duration(s): ',num2str(v.Duration,'%.2f')]
B=['BitsperPixel: ',num2str(v.BitsPerPixel)]
F=['FrameRate: ',num2str(v.FrameRate)]
N=['Num Frames: ',num2str(v.NumFrames)]
mstr=([D;F;B;N])
f = msgbox(mstr,'icon','help');
waitforbuttonpress; %Block matlab until msgbox button is pressed
Gives an error: Dimensions of arrays being concatenated are not consistent
0 Kommentare
Akzeptierte Antwort
cdawg
am 28 Jan. 2023
Bearbeitet: cdawg
am 28 Jan. 2023
Each one of those isn't a string. If you look at D, F, B, and N in your workspace they are character vectors. For example, if I choose a value for duration:
D = ['Duraction(s): ', num2str(100)];
ischar(D)
length(D)
D is as long as however may characters it has. That would mean that each of the vectors your concatenating would need to have the same number of characters.
But if I use "string" instead of 'character'
D=["Duration(s): ",num2str(100)];
isstring(D)
length(D)
Each vector will have a length of 2. If you want Duration and num2str to be together in one cell, try using strcat()
D=strcat("Duration(s): ",num2str(100));
B=strcat("BitsperPixel: ",num2str(1000));
F=strcat("FrameRate: ",num2str(10000));
N=strcat("Num Frames: ",num2str(1000));
mstr=([D;F;B;N])
3 Kommentare
Sulaymon Eshkabilov
am 28 Jan. 2023
Bearbeitet: Sulaymon Eshkabilov
am 28 Jan. 2023
Here strcat is not necessary. The straight and complete answer is the use of {} instead of [ ] to have the messaeg in the msgbox.
% v = VideoReader(filename); % Create Videoreader object
%Get info from video
v.Duration=4.70;
v.BitsPerPixel = 24;
v.FrameRate=30;
v.NumFrames=141;
D=['Duration(s): ',num2str(v.Duration,'%.2f')]
B=['BitsperPixel: ',num2str(v.BitsPerPixel)]
F=['FrameRate: ',num2str(v.FrameRate)]
N=['Num Frames: ',num2str(v.NumFrames)]
mstr=({D;F;B;N}) % Use braces
f = msgbox(mstr,'icon','help');
Weitere Antworten (1)
Sulaymon Eshkabilov
am 28 Jan. 2023
Here is the corrected code:
v = VideoReader(filename); % Create Videoreader object
%Get info from video
D=['Duration(s): ',num2str(v.Duration,'%.2f')]
B=['BitsperPixel: ',num2str(v.BitsPerPixel)]
F=['FrameRate: ',num2str(v.FrameRate)]
N=['Num Frames: ',num2str(v.NumFrames)]
mstr=({D;F;B;N}) % Use braces
f = msgbox(mstr,'icon','help');
waitforbuttonpress; %Block matlab until msgbox button is pressed
0 Kommentare
Siehe auch
Kategorien
Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!