2017-01-23 5 views
0

Предположим, у нас есть таблица 1x3 A=table(1,2,3);от Matlab «VariableNames» не принимает сочетание числовых и нечисловых записей

чей заголовок имена должны содержать смесь numericals и не-numericals:

A.Properties.VariableNames={'from 1st-5th' 'from 6th-10th' ... 'from 11th-15th'}; 

и генерирует следующее сообщение об ошибке:

from 1st-5th' is not a valid variable name.

Я попробовал функцию sprintf, чтобы решить эту проблему ошибка, но параметр formatSpec запутан. Кроме того, я прочитал около eval и хотел бы знать, полезно ли это в моем контексте.

Итоги genvarname использования:

enter image description here

ответ

3

Как ваша ошибка очень четко указано, что строки, которые вы предоставили для имен переменных not valid variable nameswhen they have to be

Variable names, specified as a cell array of character vectors that are nonempty and distinct. Variable names must be valid MATLAB® variable names

Вы можете использовать встроенный -in genvarname, чтобы преобразовать ваши строки в valid variable names

A.Properties.VariableNames = genvarname({'from 1st-5th' 'from 6th-10th' 'from 11th-15th'}); 

Альтернативно, придумайте свои собственные имена переменных, которые являются допустимыми именами переменных (без пробелов или дефис).

names = {'from 1st-5th' 'from 6th-10th' 'from 11th-15th'}; 
A.Properties.VariableNames = regexprep(names, '[ \-]', '_'); 
+0

спасибо, @Suever! К сожалению, это не привело к желаемому результату (см. Снимок выше) – John

+0

@John Если вывод 'genvarname' не работает, измените ярлыки самостоятельно, чтобы они были такими, какими вы их хотите (они должны быть допустимые имена переменных). Вы можете увидеть ссылки, которые я опубликовал, для определения правильного имени – Suever

+0

спасибо, @Suever! Решение для работы (например, «from_1st_5th») выполняет свою работу на данный момент, но я все еще ищу фактический результат в форме, как описано выше. – John

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