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