codegen: problems with output arguments of function
1 次查看(过去 30 天)
显示 更早的评论
I am trying to convery legacy MATLAB code into C code and am running into some problems.
function [yr, yi] = module do_something(xr, xi, bitrate)
x = complex(x1, x2);
// etc etc do some stuff get back y as a complex number
yr = real(y);
yi = imag(y);
end
I split up the imaginary and real parts as I am running MATLAB R2015a and there is a note that the wrapper function does not support complex types.
My problem is output varsize
yr and yi are 2-dimensional arrays that can vary in size. If I don't specify anything, my generated C-code creates an int * yr_size[2] and int * yi_size[2]. I read the contents of the array and the first element contains the number of rows and the second array was always 0.
After reading up, I decided to use coder.varsize. I got an error from codegen saying that variable input/output varsize is not supported.
To work around this, I create 2 fixed arrays of max size, yr_padded and yi_padded. Then, after all my calculations, I copy yr and yi into their respective fixed arrays and pass that as the output to the argument.
function [yr_padded, yi_padded] = module do_something(xr, xi, bitrate) #codegen
x = complex(x1, x2);
// etc etc do some stuff get back y as a complex number
yr = real(y);
yi = imag(y);
yr_padded = zeros(7, 800000);
yi_padded = zeros(7, 800000);
for i = 1:size(yr, 1)
for j = 1:size(yr, 2)
yr_padded(i,j) = yr(i,j);
end
end
for i = 1:size(yi, 1)
for j = 1:size(yi, 2)
yi_padded(i,j) = yi(i,j);
end
end
end
Is there a more elegant way to do this? What exactly is happening with yr_size and yi_size?
0 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 MATLAB Algorithm Acceleration 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!