# vertical concatenate strings in msgbox

조회 수: 9(최근 30일)
Jason 2023년 1월 28일
편집: Jason 2023년 1월 28일
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

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

### 채택된 답변

cdawg 2023년 1월 28일
편집: cdawg 2023년 1월 28일
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표시 이전 댓글 수: 2숨기기 이전 댓글 수: 2
Jason 2023년 1월 28일
편집: Jason 2023년 1월 28일
Oh i see, thankyou. Sorry i didnt accept your answer

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

### 추가 답변(1개)

Sulaymon Eshkabilov 2023년 1월 28일
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

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

### 범주

Find more on Characters and Strings in Help Center and File Exchange

R2022b

### Community Treasure Hunt

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

Start Hunting!

Translated by