如何循环所需的输出?

时间:2013-04-10 08:21:50

标签: matlab matrix

大家好我有一个矩阵输入程序,如下图所示。但是我无法循环空或复或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

1 个答案:

答案 0 :(得分:1)

A中分配NaN,复数值和空输入之前,您应该检查它们。你可以这样做:

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,则会出错。