i had run code that used line() function. and then i got error in line() function.
Error using line
vectors must be the same length
Error in file_name (line 45)
line(h, [thisX, thisX], ylim(h), 'Color', 'r');
h is subplot(4, 12, 1:12).
both of thisX variables off course had the same length.
So. does MATLAB R2015B support line() function ? or was i just wrong while placing the arguments ?

 채택된 답변

Walter Roberson
Walter Roberson 2018년 12월 29일

1 개 추천

ylim(h) is going to be a row vector of length 2. If your thisX is not scalar then the X values you construct would not be the same length .
you cannot use line() to draw a series of vertical lines. line() can only create one line object per call. plot() can create multiple line objects per call.

댓글 수: 5

@Walter: line is able to create multiple lines with one call by providing matrices as input - exactly as plot:
axes;
line([1,2;3,4], [1,3;2,4])
Walter Roberson
Walter Roberson 2018년 12월 29일
Hmmm, I'm sure that didn't work at some point in the past...
thisX is scalar numeric sir that has float data type.
Okay, the problem is that in R2015b, it was not yet permitted to pass an axes as the first parameter. See https://www.mathworks.com/help/releases/R2015b/matlab/ref/line.html
The cure is to use the 'Parent' parameter:
line([thisX, thisX], ylim(h1), 'Parent', h1)
thank you very much sir @Walter Roberson ! brilliant

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

추가 답변 (2개)

Star Strider
Star Strider 2018년 12월 29일

2 개 추천

So. does MATLAB R2015B support line() function ?
The line (link) function was ‘Introduced before R2006a’ according to the documentation, so it should.
both of thisX variables off course had the same length.
True. However you horizontally concatenated two of them.
or was i just wrong while placing the arguments ?
I would agree.
If we see your entire code, we would be able to provide more help.
Jan
Jan 2018년 12월 29일

1 개 추천

"h is subplot(4, 12, 1:12)" - this is not clear. Is h a scalar or a vector?
The message is clear: [thisX, thisX] and ylim(h) do not have matching sizes. So use the debugger to examine the problem:
dbstop if error
Type this in the command window and run the code again. When Matlab stops at the error, check the sizes:
size([thisX, thisX])
size(ylim(h))

댓글 수: 3

Walter Roberson
Walter Roberson 2018년 12월 29일
subplot(4, 12, 1:12)
subplot can be passed a vector of values for the third parameter. The effect is to create an axes that spans the referenced positions (which must form a rectangular sub-block)
Walter Roberson
Walter Roberson 2018년 12월 29일
Watch out for thisX being row vector vs column vector. With column vector you might get away with it; with row vector you will not, not unless thisX is scalar.
@ Jan : this is the output of h sir: h.PNG
the size is 1x1.
And i just tried your solution sir. the error still showed up. And then output of both size([thisX, thisX]) and size(ylim(h)) are 1x2.

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

카테고리

도움말 센터File Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기

제품

릴리스

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by