2012-10-18 2 views
3

Im извлекает зависящие от времени данные из файла .dat и использует функцию сплайна, сопоставляя значения с существующим вектором времени при использовании. По какой-то причине функция длины не считывает длину вектора.В Matlab ошибка с использованием длины (x) дает ошибку индексации.

я могу воссоздать ошибку с этой аннотации:

x = linspace(1,98,76)'; 
y = 20.*x-5.*x.^2; 
t = linspace(0,100,1000)'; 
yy = spline(x,y,t); 
length(yy) 

возвращает

??? Индексы индексов должны быть либо натуральными целыми числами, либо логическими.

В моей рабочей области показано, что yy 1000x1 double, а max (размер (yy)) отлично работает. Любая идея о том, что создает эту ошибку?

+0

Я не получаю ошибку при запуске этого кода на R2012b в Linux Mint. Попробуйте добавить 'clear' в начало вашего рекламного ролика, и если он начнет работать правильно, вы узнаете, что идея преторианца верна. –

+0

У меня также нет ошибки в R2010b на ubuntu 10.04. – jespestana

+0

Также см. [Этот вопрос] (http://stackoverflow.com/questions/20054047/subscript-indices-must-either-be-real-positive-integers-or-logicals-generic-sol) для [общего решения эта проблема] (http://stackoverflow.com/a/20054048/983722). –

ответ

8

У вас, вероятно, есть переменная с именем length в вашем рабочем пространстве. Используйте команду whos, чтобы убедиться, что это так.

whos length 

Это напечатает размер и тип переменной length, если она существует.

Смежные вопросы