# vertical concatenate strings in msgbox

3 visualizaciones (últimos 30 días)
Jason el 28 de En. de 2023
Editada: Jason el 28 de En. de 2023
Hello,I cant understand why this vertical concatenation of strings isn't working.
%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 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

cdawg el 28 de En. de 2023
Editada: cdawg el 28 de En. de 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)
ans = logical
1
length(D)
ans = 17
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)
ans = logical
1
length(D)
ans = 2
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])
mstr = 4×1 string array
"Duration(s): 100" "FrameRate: 10000" "BitsperPixel: 1000" "Num Frames: 1000"
##### 3 comentariosMostrar 1 comentario más antiguoOcultar 1 comentario más antiguo
Sulaymon Eshkabilov el 28 de En. de 2023
Editada: Sulaymon Eshkabilov el 28 de En. de 2023
Here strcat is not necessary. The straight and complete answer is the use of {} instead of [ ] to have the messaeg in the msgbox.
%Get info from video
v.Duration=4.70;
v.BitsPerPixel = 24;
v.FrameRate=30;
v.NumFrames=141;
D=['Duration(s): ',num2str(v.Duration,'%.2f')]
D = 'Duration(s): 4.70'
B=['BitsperPixel: ',num2str(v.BitsPerPixel)]
B = 'BitsperPixel: 24'
F=['FrameRate: ',num2str(v.FrameRate)]
F = 'FrameRate: 30'
N=['Num Frames: ',num2str(v.NumFrames)]
N = 'Num Frames: 141'
mstr=({D;F;B;N}) % Use braces
mstr = 4×1 cell array
{'Duration(s): 4.70'} {'FrameRate: 30' } {'BitsperPixel: 24' } {'Num Frames: 141' }
f = msgbox(mstr,'icon','help');
Jason el 28 de En. de 2023
Editada: Jason el 28 de En. de 2023

Iniciar sesión para comentar.

### Más respuestas (1)

Sulaymon Eshkabilov el 28 de En. de 2023
Here is the corrected code:
%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 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

### Categorías

Más información sobre Text Files en Help Center y File Exchange.

R2022b

### Community Treasure Hunt

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

Start Hunting!

Translated by