Singleton error causing mismatch?

What is going on here?
Assignment has more non-singleton rhs dimensions than non-singleton
subscripts
Error in Reduced_DLF_finder (line 18)
report(i,1)=props(i).name;
The props piece comes out with a single string, like 'hello', when I type it in the Matlab window. Just trying to put it into a slot in a report table I'm building.
What am I doing wrong?

답변 (1개)

per isakson
per isakson 2018년 6월 24일
편집: per isakson 2018년 6월 24일

0 개 추천

Try replacing
report(i,1)=props(i).name;
by
report(i,1)={props(i).name};
and see table, Table array with named variables that can contain different types together with its references See also:.

댓글 수: 7

David Pesetsky
David Pesetsky 2018년 6월 24일
편집: David Pesetsky 2018년 6월 24일
Now I get
Conversion to double from cell is not possible.
The other columns of report are numerical.
Now you report a new problem.
I assume that
report(i,1)={props(i).name};
did work.
I cannot guess how you tried to assign "numerical".
This is an example from the documentation and my assignment of 99 to Var1
>> T = table({'M';'M';'F';'F';'F'},[38;43;38;40;49], ...
[71;69;64;67;64],[176;163;131;133;119])
T =
5×4 table
Var1 Var2 Var3 Var4
____ ____ ____ ____
'M' 38 71 176
'M' 43 69 163
'F' 38 64 131
'F' 40 67 133
'F' 49 64 119
>> T{1,2} = 99
T =
5×4 table
Var1 Var2 Var3 Var4
____ ____ ____ ____
'M' 99 71 176
'M' 43 69 163
'F' 38 64 131
'F' 40 67 133
'F' 49 64 119
To learn Matlab you need to read the documentation.
In fact that did work. It's when I try to load other variables into the Report columns, that I get that new error. The new variables are just values. The 1st line is a cell array:
report(i,1)={props(i).name};
report(i,2)=reduced_DLF(i).max(1,2);
report(i,3)=reduced_DLF(i).max(1,1);
hhh
Study Access Data in a Table carefully.
Note in my example
>> T{1,2} = 99
with curly braces
David Pesetsky
David Pesetsky 2018년 6월 25일
편집: per isakson 2018년 6월 25일
So, I was able to load up "report" with all the elements that I care about.. turns out some of the elements were "emprty", so were messing up the assigning:
for i = 1:num_of_mat
% report{i,1}={reduced_DLF(i).name};
if ~isempty(reduced_DLF(i).max)
report{kkk,1}={reduced_DLF(i).name};
report{kkk,2}=reduced_DLF(i).max(1,2);
report{kkk,3}=reduced_DLF(i).max(1,1);
kkk=kkk+1;
end
end
% csvwrite('report.txt',report)
% xlswrite('report.xls',report);
But now, "report" is a cell array having the 1st column as "strings", and the rest as numbers. I just need to write out "report". csvwrite chokes on the mixture of cell types? And xlswrite ignores the 1st column of strings and just writes the numeric cells.
per isakson
per isakson 2018년 6월 25일
편집: per isakson 2018년 6월 25일
"But now, "report" is a cell array" I though report was a Matlab table, which should be obvious from my answer and comments. I might have been mistaken. However, you didn't put me straight. Now you say that report is a cell array.
"csvwrite chokes on the mixture of cell types" That is an expected behaviour. (It's easier to write a table to a file.) See the text under the Examples tab of tprintf, tprintf writes tabular data to a text file on printing cell arrays to text files.
David Pesetsky
David Pesetsky 2018년 6월 26일
Is these any simpler way to export the cell array to txt or xls?

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

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

질문:

2018년 6월 24일

댓글:

2018년 6월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by