0

大家好,我有一个矩阵输入程序,如下所示。但是,我无法循环空输入或复杂输入或 NaN 输入。我已经厌倦了各种方法,但仍然不起作用。真诚希望得到大家的建议,以解决这个问题。

clear;clc
m=2;
for i = 1:m
    for j = 1:m;

        element_A = ['Enter the element in row ' num2str(i) ', col ' num2str(j) ': '];
        A(i,j) = input(element_A);

        while  isnan(A(i,j)) || ~isreal(A(i,j)) || isempty(A(i,j))
            fprintf('Input not valid')
            element_A = ['Enter the element in row ' num2str(i) ', col ' num2str(j) ': '];
            A(i,j) = input(element_A);
        end        

    end
end

%% sample loop
m = str2double( input('??? : ', 's') );
while isnan(m) || ~isreal(m) || m<0
    m = str2double( input('Enter valid value : ', 's') );
end
4

1 回答 1

1

在将它们分配到A. 你可以这样做:

m=2;
A = zeros(m); % You do not have to do this but it will increase the performance of your code.
for idx = 1:m
    for jdx = 1:m;
        element_A = ['Enter the element in row ' num2str(idx) ', col ' num2str(jdx) ': '];
        inputElement = input(element_A);
        while isempty(inputElement) || isnan(inputElement) || ~isreal(inputElement)
            fprintf('Invalid input');
            inputElement = input(element_A);

        end
        A(idx,jdx) = inputElement;
    end
end

请注意,我将isempty检查移至第一位。||是一个短路运算符,不会检查下一个值是第一个元素给出的true。如果在之后检查它,比如说isnan,它会给出一个错误。

于 2013-04-10T08:51:38.487 回答