Я новичок в Matlab и пытаюсь скомпилировать устаревший код Matlab в C. При этом я сталкиваюсь со следующей ошибкой:
??? Левая часть должна быть несложной, но правая часть является сложной. Чтобы исправить эту проблему, сделайте правую часть вещественной, используя функцию REAL, или измените начальное присваивание левой части переменной, чтобы она была комплексным значением, с помощью функции КОМПЛЕКС.
Код, на который он жалуется, находится в комментариях к коду ниже:
function [z_out,ovf_flag,ovf_cnt] = fxpt_sgn_saturate(z_in,Nb_out)
Nb_out=(Nb_out<=0)+(Nb_out>0)*Nb_out;
max_val = 2^(Nb_out-1)-1;
min_val = -2^(Nb_out-1);
ovf_cnt = 0;
tmp_ind = find(real(z_in) > max_val);
z_in(tmp_ind) = max_val+1j*imag(z_in(tmp_ind)); // ERROR OCCURS HERE
ovf_cnt = ovf_cnt + numel(tmp_ind);
tmp_ind = find(real(z_in) < min_val);
z_in(tmp_ind) = min_val+1j*imag(z_in(tmp_ind));
ovf_cnt = ovf_cnt + numel(tmp_ind);
tmp_ind = find(imag(z_in) > max_val);
z_in(tmp_ind) = real(z_in(tmp_ind))+1j*max_val;
ovf_cnt = ovf_cnt + numel(tmp_ind);
tmp_ind = find(imag(z_in) < min_val);
z_in(tmp_ind) = real(z_in(tmp_ind))+1j*min_val;
ovf_cnt = ovf_cnt + numel(tmp_ind);
z_out = z_in;
ovf_flag = ~(ovf_cnt==0);
return
Я плохо понимаю код. Любые идеи, как решить эту проблему?
Спасибо
z_in
должно быть реальным? - person Suever   schedule 08.03.2017z_in
. Возможно, вы пытаетесь привести его кcomplex
перед запуском кода? - person rayryeng   schedule 08.03.2017