В прошлом я широко использовал класс table
Matlab. Этот очень простой код внутри скрипта или в приглашении работает так, как ожидалось:
varNames = {'Date_time', 'Concentration_1', 'Concentration_2'};
testTable = array2table(zeros(5,3), 'VariableNames', varNames)
Теперь у меня такой же table
, как property
у handle class
.
classdef TestClass < handle
properties
testTable (:,3) table
end
methods
function testMethod(obj)
varNames = {'Date_time', 'Concentration_1', 'Concentration_2'};
obj.testTable = array2table(zeros(5,3), 'VariableNames', varNames);
obj.testTable.Properties.VariableNames
end
end
end
Если я выполню следующее в командной строке, zeros
будут назначены table
, но VariableNames
сохранят свое значение по умолчанию, т. е. {'Var1', 'Var2'}
и т. д.
tc = TestClass; tc.testMethod
Даже tc.testTable.Properties.VariableNames = varNames
их не меняет.
Это баг, или я что-то пропустил? (Я использую Matlab R2017b)
'Var1', 'Var2', ...
, но работает, как и ожидалось, как только принудительное ограничение размера удаляется. - person excaza   schedule 24.01.2018testTable (:,3) table
означает, что это должен быть массив таблиц размером 3 на 3, а не таблица 3 на 3. У вас не может быть массивов таблиц, поэтому это ограничение не имеет смысла. Используйте явную функцию проверки подлинности, как это предлагается в ответе @excaza. - person Sam Roberts   schedule 24.01.2018