error message 'The end operator must be used within an array index expression.'

Hi,
When I try to plot
plot(H20Vs{1:end,1},H20Vs{1:end,2})
hold on
plot(M20Vs{1:end,1},M20Vs{1:end,2})
hold on
plot(N20Vlin{1:end,1},N20Vlin{1:end,2})
% hold on
% plot(P20Vs{1:end,1},P20Vs{1:end,2})
legend('a' ,'b', 'c', 'd', 'e', 'f', 'h', 'l', 'm', 'n')
I recieve this error message 'The end operator must be used within an array index expression.'
Does anyone have any idea why this could be happening? I noticed the last two plot functions don't cause this issue, only the first one.
Cheers

回答 (1 件)

It is likely that the error is in code before what was posted. For example,
a(end)=1
The end operator must be used within an array index expression.
This error occurs because end was used to index an array that does not exist yet.

3 件のコメント

plot(H20Vs{1:end,1},H20Vs{1:end,2})
This code is very likely wrong, unless H20Vs is a 1 x N cell array for N >= 2.
If H20Vs is a 2 x something cell array, then H20Vs{1:end,1} would do cell array expansion of H20Vs{1,1}, H20Vs{2,1}, H20Vs{3,1} and so on, inserting all of the values "in place" in the command line, and then would do the same thing for H20Vs{1,2}, H20Vs{2,2}, H20Vs{3,2} and so on. The result would be as-if the call
plot(H20Vs{1,1}, H20Vs{2,1}, H20Vs{1,2}, H20Vs{2,2})
had been made. This would plot H20Vs{1,1} against H20Vs{2,1} and H20Vs{1,2} against H20Vs{2,2}. The code would not plot H20Vs{1,1} against H20Vs{2,1} and then plot H20Vs{2,1} against H20Vs{2,2} and so on.
Stephen23
Stephen23 2025 年 7 月 4 日
H20Vs might be a table, in which case that syntax does not generate a comma-separated list.
Walter Roberson
Walter Roberson 2025 年 7 月 4 日
Good point about tables.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCreating, Deleting, and Querying Graphics Objects についてさらに検索

製品

リリース

R2020b

質問済み:

Em
2021 年 9 月 30 日

コメント済み:

2025 年 7 月 4 日

Community Treasure Hunt

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

Start Hunting!

Translated by