who to fix Variable name error

100 次查看(过去 30 天)
Hello,
I have a code for drawing graphs from excle file. I receive the below error. The code and excel screen shoot are attached. could I get help in understand why this happened?
Warning: Column headers from the file were modified to make them valid MATLAB identifiers before creating variable names
for the table. The original column headers are saved in the VariableDescriptions property.
Set 'VariableNamingRule' to 'preserve' to use the original column headers as table variable names.
Error using .
Unrecognized table variable name 'X'.
Error in newCode (line 7)
data.Time = timeofday(data.X);

采纳的回答

Sahaj
Sahaj 2023-7-16
Hi Lina.
When importing Excel data into MATLAB, the column names may sometimes be modified to ensure they adhere to MATLAB's variable naming rules. MATLAB has specific rules for variable names, such as not allowing spaces.
To preserve your column names, while importing data, you can set the 'VariableNamingRule" to "preserve":
data = readtable('your_excel_file.xlsx', "VariableNamingRule", "preserve");
Now, you will be able to access you data using the original column names:
data.Time = timeofday(data.X);
Another way you can access the data is to use the modified variable name. You can see the variable name using the command:
variableNames = data.VariableNames;
Let the modified name be Var1. You can access the column using the command:
data.Time = timeofday(data.Var1);
Hope this helps.
  4 个评论
Walter Roberson
Walter Roberson 2023-7-18
path1 + '\Right.png'
The result of that depends on whether path1 contains a character vector or a string() object. If path1 is a character vector then MATLAB would attempt to do arithmetic between the "codepoints", which would fail if path1 did not happen to have the same number of characters as '\Right.png' with the exception that it would work if path1 happened to be exactly one character. But suppose for example that path1 was 'A' then,
path1 = 'A';
path1 + '\Right.png'
ans = 1×10
157 147 170 168 169 181 111 177 175 168
char(ans)
ans = '□□ª¨©µo±¯¨'
the result is numeric rather than character, and does not have any period.
If, on the other hand, path1 contained a scalar string() object, then the path1 + '\Right.png' would append the characters 'Right.png' after whatever was in path1 ... which could be a problem if you do not happen to be on a Windows machine.
@Sahaj made the suggestion to use fullfile(), and that is a good suggestion: fullfile() will authomatically convert strings and characters as needed, and will automatically use the proper directory separator for your current operating system.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Variables 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by