Matrix column extraction not working when using codegen
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
John Edwards
il 22 Apr 2022
Commentato: John Edwards
il 25 Apr 2022
I'm trying to integrate some Matlab code with some C code, using codegen. For this task I need to extract some columns of data from a Matlab matrix.
The Matlab code runs fine but the C code does not appear to be extracting the columns correctly.
For example, if I have:
a=[1 2 3; 4 5 6; 7 8 9];
and I perform the following:
a1 = a(:,1);
a2 = a(:,2);
disp(a1);
disp(a2);
Then I get the expected output:
1
4
7
2
5
8
However, if I run codegen (on a slightly larger set) the C code is:
memcpy(&a1[0], &a[0], 30U * sizeof(double));
memcpy(&a2[0], &a[30], 30U * sizeof(double));
which results in the ouput:
1
2
3
4
5
6
Note: My actual data is read in from a large .csv file so I have simplified the details above to show the problem.
Also, with the large data files, the generated C code is using for loops rather than memcpy but that's by the by because the results are still the same.
Any suggestions would be most welcome.
Thanks very much,
John
0 Commenti
Risposta accettata
Mark McBroom
il 25 Apr 2022
By default, code from MATLAB coder is column major Try changing to row-major as described here:
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!