«Недостаточно входных аргументов» при публикации команд MATLAB - PullRequest
0 голосов
/ 26 апреля 2019

Я написал следующий код:

function [a1,b1,a0,b0] = Conformal_2D(x_input,y_input,X_output,Y_output)
%%
% Calculates parameters $a,b,a_0,b_0$ in the following equation using least
% squares
%%
% 
% $$X=a_1x+b_1y+a_0$$
%
% $$X=-b_1x+a_1y+b_0$$
%%
% *Arguments:*
%
% x_input is a $n\times 1$ matrix containing x coordinate of control points
% in the input space
%
% y_input is a $n\times 1$ matrix containing y coordinate of control points
% in the input space
%
% x_output is a $n\times 1$ matrix containing x coordinate of control points
% in the output space
%
% y_output is a $n\times 1$ matrix containing y coordinate of control points
% in the output space 
%%
NumberOfPoints = size(x_input,1);
A = zeros(2*NumberOfPoints,1); % Coefficient matrix in AX = L
L = zeros(2*NumberOfPoints,1); % Right-hand matrix in AX = L
    for i = 1:NumberOfPoints
        A(2*i-1,1:4) = [x_input(i,1) y_input(i,1) 1 0];
    end
end

Когда я нажимаю кнопку «Опубликовать», я получаю:

enter image description here

В чем проблема с этой линией?

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

Не уверен, что это лучший обходной путь, но мне удалось опубликовать функцию с помощью следующего скрипта.Конечно, вы будете использовать свои собственные записи для x_input, y_inpyt и т. Д. Убедитесь, что вы сохранили следующий скрипт в файле , а не с именем Conformal_2D.m.

Conformal_2D([3;2;1],[5;6;7],[11;12;13],[14;15;16]);

function [a1,b1,a0,b0] = Conformal_2D(x_input,y_input,X_output,Y_output)
%%
% Calculates parameters $a,b,a_0,b_0$ in the following equation using least
% squares
%%
% 
% $$X=a_1x+b_1y+a_0$$
%
% $$X=-b_1x+a_1y+b_0$$
%%
% *Arguments:*
%
% x_input is a $n\times 1$ matrix containing x coordinate of control points
% in the input space
%
% y_input is a $n\times 1$ matrix containing y coordinate of control points
% in the input space
%
% x_output is a $n\times 1$ matrix containing x coordinate of control points
% in the output space
%
% y_output is a $n\times 1$ matrix containing y coordinate of control points
% in the output space 
%%
NumberOfPoints = size(x_input,1);
A = zeros(2*NumberOfPoints,1); % Coefficient matrix in AX = L
L = zeros(2*NumberOfPoints,1); % Right-hand matrix in AX = L
    for i = 1:NumberOfPoints
        A(2*i-1,1:4) = [x_input(i,1) y_input(i,1) 1 0];
    end
end

enter image description here

0 голосов
/ 27 апреля 2019

При публикации MATLAB запускает код по умолчанию. Конечно, ваша функция имеет входные аргументы, которые не будут установлены в этом случае (см. этот другой вопрос ).

Есть несколько способов обойти это. Ответ Хуанчито иллюстрирует один: не публикуйте функцию, публикуйте сценарий.

Либо опубликуйте функцию, не выполняя ее:

publish('Conformal_2D.m','evalCode',false)

Или дать MATLAB правильные объявления для оценки перед выполнением содержимого функции:

publish('Conformal_2D.m','codeToEvaluate','x_input=1; y_input=2; X_output=3; Y_output=4')

(конечно, отрегулируйте эти значения).

...