0
我已經制作了一個Matlab程序,用於檢測2個圓圈是否相互交叉並輸出交叉點的座標。現在,我試圖將代碼轉換爲vhdl來實現FPGA。使用HDL Workflow Advisor將matlab代碼轉換爲vhdl
我的一個代碼中的函數那裏仍然是在HDL流程顧問的錯誤是:
function theta = angle2Points(p1,p2)
%ANGLE2POINTS Compute horizontal angle between 2 points
%
% ALPHA = angle2Points(P1, P2),
% Pi are either [1*2] arrays, or [N*2] arrays, in this case ALPHA is a
% [N*1] array. The angle computed is the horizontal angle of the line
% (P1 P2)
% Result is always given in radians, between 0 and 2*pi.
%
% See Also:
% points2d, angles2d, angle3points, normalizeAngle, vectorAngle
%
%
% ---------
dp = zeros(1,2);
% angle of line (P2 P1), between 0 and 2*pi.
dp = p2 - (size(p2, 1) * p1)
theta = mod(atan2(dp(:,2), dp(:,1)) + 2*pi, 2*pi)
的錯誤:
- 變量 'P1'。不支持變量大小的數據。
- 變量'p2'。不支持變量大小的數據。
- 變量'theta'。不支持變量大小的數據。
一個小測試文件,模擬輸入數據:
% P = [x,y]
P1 = [0,3];
P2 = [5,10];
f=angle2Points(P1,P2);
P1 = [0,3];
P2 = [5,3];
f2=angle2Points(P1,P2
在工作流顧問我收到:可變大小數據不支持 - 錯誤1號線。
我理解這是因爲像C這樣的靜態類型語言必須能夠在編譯時確定變量屬性,而在Matlab中它是動態發生的。
我想就如何正確地重寫代碼以使其準備好hdl這個簡單的函數一些幫助。
預先感謝
那麼,在其他函數中,我通過給它們默認值來初始化變量。但仍然發生相同的錯誤 – user3488736
@ user3488736你是怎麼做到的? MATLAB沒有默認值的概念。 – Suever
@ user3488736請將該代碼放入您的問題中,而不是在您的評論中......我無法讀取它 – Suever