Dot indexing is not supported for variables of this type.

조회 수: 450 (최근 30일)
Pras
Pras 2021년 5월 26일
댓글: Walter Roberson 2024년 4월 7일
Dear all,
I am very new to Matlab. How can I fix the error of "Dot indexing is not supported for variables of this type" in the following code? Thank you.
global M_
% read out parameters to access them with their name
NumberOfParameters = M_.param_nbr;
for ii = 1:NumberOfParameters
paramname = deblank(M_.param_names(ii,:));
eval([ paramname ' = M_.params(' int2str(ii) ');']);
end
% initialize indicator
check = 0;
The error:
Dot indexing is not supported for variables of this type.
Error in DT_steadystate (line 7)
NumberOfParameters = M_.param_nbr;
Best,
Pras
  댓글 수: 3
Marwan Soliman
Marwan Soliman 2022년 5월 4일
filename='pulse.txt';
delimiterIn='';
headerlinesIN= 1;
A=importdata(filename,delimiterIn,headerlinesIN);
Led_R = A.data(:,1); % RED (R)
Led_IR = A.data(:,2); % INFRARED (IR)
Dot indexing is not supported for variables of this type.
anyone can help plz line 5
Walter Roberson
Walter Roberson 2022년 5월 4일
I recommend against using importdata(), as the fundamental datatype that is output is too unpredicatable.
When you use importdata() with a file that is pure numeric after the given header lines, then the output is a pure numeric array.
But if you use importdata() with a file that has additional headers after the given header lines, then the output is a struct.
And if you use importdata() with a file that has a mix of text and numbers, then the output is a struct and the struct has additonal fields compared to the case of a header followed by pure numberic.
I recommand that you use readmatrix() instead for your situation.

댓글을 달려면 로그인하십시오.

채택된 답변

Pras
Pras 2021년 5월 26일
Thank you all for the reply. I am learning Matlab from this replication file of a journal article.
From another forum, I found that by including the following, it will work:
if isfield(M_,'param_nbr') == 1
end
Thanks!
Best,
Pras

추가 답변 (2개)

Allen
Allen 2021년 5월 26일
It appears that you are initializing a new variable M_ at the start of your code and by default it is just an empty double-class array. Doubles do not use or allow dot notation. Also, is there a reason why you are trying to initialize your variable as a global variable? If not, then I would recommend steering away from a global as this can create problems in subsquently run scripts if you are not careful.
clear
global M_
whos('M_')
Name Size Bytes Class Attributes M_ 0x0 0 double global
If you are intending for M_ to utilize the dot notation in MATLAB, then you will need to generate a table or structure class. See help documents for struct and table classes.
help struct
help table
  댓글 수: 2
Pras
Pras 2021년 5월 26일
Thank you all for the reply. I am learning Matlab from this replication file of a journal article.
From another forum, I found that by including the following, it will work:
if isfield(M_,'param_nbr') == 1
end
Thanks!
Best,
Pras
Allen
Allen 2021년 5월 26일
Pras,
You should what you found as a solution to you question and accept your own response as the correct solution. This will help other people that are looking for a similar answer know what works.
Thanks,
Allen

댓글을 달려면 로그인하십시오.


Tapamay
Tapamay 2024년 4월 6일
Hello Everyone,
I am new to Matlab. How can I fix the error of "Dot indexing is not supported for variables of this type" in the following code? Thank you.
The error shows this:
Dot indexing is not supported for variables of this type.
Error in RawData_To_CpVsAoA (line 13)
rawdata=rawdata.data(1:10,1:24);
clc; clear all; close all;
aoa=[-10 -8 -6 -4 -2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30];
Cp_aoa_data=[];
for i=1:length(aoa)
filename = ['Raw Data\',num2str(aoa(i)),'.txt'];
rawdata=importdata(filename);
rawdata=rawdata.data(1:10,1:24);
rawdata=mean(rawdata,1);
airfoilpressure=rawdata(1:22)*792*9.81/1000;
p_inf=rawdata(24)*792*9.81/1000;
p_0=-2.338*792*9.81/1000;
Cp = (airfoilpressure - p_inf)/(p_0-p_inf);
Cp_aoa_data=[Cp_aoa_data Cp'];
end
Error using importdata (line 139)
Unable to open file.
  댓글 수: 1
Walter Roberson
Walter Roberson 2024년 4월 7일
The data type returned by importdata() depends on the format of the file. If it happened to be something that looked like a numeric block, then importdata() would return a numeric array, and numeric arrays do not allow dot indexing.
We recommend that you use readtable() or readmatrix() or readcell() instead of importdata()

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Data Import and Analysis에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by