Problems running the code in Mac
2 views (last 30 days)
Show older comments
Hi,
I have a code that works fine with windows, but returns me an error when I try to run it using mac. Here is my code and my error
for i=1:numel(M_.params)
p.(M_.param_names{i}) = M_.params(i);
end
Brace indexing is not supported for variables of this type.
Here, M_.param_names is 54x8 char and M_.params is 54x1 double.
0 Comments
Accepted Answer
Jan
on 6 Mar 2023
This will not run on a PC also. If M_.param_names is a 54x8 char, you cannot use braces for indexing, because they work for cells only.
So the actual problem is, why M_.param_names is a CHAR matrix on the Mac, while it must be a cell string on the PC to let the code run. How did you create this variable? Is it an import of a text file, which expects specific line breaks?
3 Comments
Jan
on 7 Mar 2023
@Vahagn: This looks like a CHAR matrix and as explained already, you cannot access it with curly braces as index. But the conversion to a cell string is easy:
names = cellstr(M_.param_names); % This is a cell string now
for i=1:numel(M_.params)
p.(names{i}) = M_.params(i);
end
cellstr crops the trailing spaces.
More Answers (1)
Steven Lord
on 6 Mar 2023
Indexing into a char array using {} is not supported on any platform.
a = 'abracadabra'
a(5) % 'c'
a{5} % error
Perhaps your M_.param_names variable is a char array on Mac but a cell array containing char arrays on Windows and/or Linux. How do you create that field of the M_ struct?
0 Comments
See Also
Categories
Find more on Cell Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!