在matlab中进行循环

时间:2011-04-30 14:27:33

标签: matlab

我想编写一个首先要求输入的脚本:

A = input('Enter a square matrix A: ');

如果它不是方形矩阵,则会显示错误,然后再次询问输入矩阵A

并基于A的维度,命令行中的程序接下来要求输入以下内容:(假设A的维度为3)

Enter 3x1-matrix B: 
Enter 1x3-matrix C:

然后,它会要求初始值x(0),在我们的情况下它们是3 x(0):

The initial values:
x1(0): 
x2(0): 
x3(0): 

(注意:x(0)的数量取决于A的维数。我们可以将初始值存储在变量x1,x2和x3中)

我如何在Matlab中编写代码?

提前感谢!

=======================

我的尝试:

while(true)
A = input('Enter square matrix A: ');
sizeA = size(A);
if sizeA(1) == sizeA(2)
    break;
end
    display('Error: You have to enter square matrix!')
end
while(true)
B = input('Enter ' + sizeA(1) + 'x1-matrix B: ');
sizeB = size(A);
if sizeB(1) == sizeA(1) && sizeB(2) == 1
    break;
end
    display('Error: You have to enter ' + sizeA(1) + 'x1-matrix!')
end
while(true)
C = input('Enter 1x' + sizeA(1) + '-matrix C: ');
sizeC = size(A);
if sizeC(1) == 1 && sizeC(2) == sizeA(1)
    break;
end
    display('Error: You have to enter 1x' + sizeA(1) + '-matrix!')
end
display('The initial values: ');
% well, I don't know how to start writing the code for the initial values

========================

最后,我得到了我想要的东西

while(true)
A = input('Enter square matrix A: ');
sizeA = size(A);
if sizeA(1) == sizeA(2) && ndims(A) == 2
    break;
end
    display('Error: You have to enter square matrix!')
end
while(true)
B = input(['Enter ' , num2str(sizeA(1)) , 'x1-matrix B: ']);
sizeB = size(B);
if sizeB(1) == sizeA(1) && sizeB(2) == 1  && ndims(B) == 2
    break;
end
    display(['Error: You have to enter ' , num2str(sizeA(1)) , 'x1-matrix!'])
end
while(true)
C = input(['Enter 1x' , num2str(sizeA(1)) , '-matrix C: ']);
sizeC = size(C);
if sizeC(1) == 1 && sizeC(2) == sizeA(1)  && ndims(C) == 2
    break;
end
    display(['Error: You have to enter 1x' , num2str(sizeA(1)) , '-matrix!'])
end
display('The initial values: ');
for i=1:sizeA(1)
    x(i) = input(['Enter X' , num2str(i) , '(0): ']);
end

1 个答案:

答案 0 :(得分:3)

你没有告诉我们你已经走了多远或尝试了什么。请记住,SO不是要求我们执行您的整个代码的地方,而是要求帮助解决特定问题。

然而,我不想让你在没有帮助的情况下挂在那里。因此,您可以尝试使用以下函数来编写脚本。一旦基本脚本正常工作,您就可以随时编辑帖子以询问更具体的问题。

  1. 查看请求用户输入的input功能
  2. 使用error函数抛出错误。
  3. 使用size获取数组的尺寸。使用两个输出参数(如[rows cols]=size(A))来获取这两个维度。
  4. 检查是否rows==cols还不够。您还需要使用ndims确认只有两个维度,就好像有两个以上的维度,并且您只从大小请求两个输出,它将第二个和更高维度组合到第二个输出中。例如,查看[rows,cols]=size(rand(4,2,2))
  5. 的内容
  6. 您可以使用isequal以及上述某些内容来验证矩阵BC的输入维度是否正确。
  7. 您可以将初始值存储为kwatford建议的单元格或矢量。我不知道哪一个不知道你要用它做什么。
  8. 希望这些能帮助你开始。