在MATLAB或Octave中扫描用户输入(编写.m文件时)

时间:2014-02-01 22:43:14

标签: matlab user-input octave

我对MATLAB很新,我遇到了一些困难。我想问用户输入,我似乎能够在终端中逐行编码时做得很好。但是,我想将我的代码保存在 .m 文件中,以便我可以打印并对其进行评分。这就是问题所在。在我看来,程序不是在等待用户输入,而是跳到下一行代码并尝试使用下一行代码,就好像它是输入到程序一样,这显然不是我想要的。如何停止程序以确保它等待用户输入而不是尝试使用我的代码作为输入?

我应该提一下,我没有使用MATLAB,但我使用的是GNU Octave,它是一种开源替代MATLAB,语法相同。

这是我未完成的代码:

% Get user input
time_slots = input('Desired number of time slots: ')
packet_length = input('Desired length of packet train: ')
%probability = input('Desired probability of packet arrival: ')

% Fill a vector of length 'time_slots' with uniformly-distributed random numbers
P = rand(time_slots,1);

% Determine if packet was recieved or not.
for i = 1:time_slots
    if P(i) <= probability
        Q(i) = 1;
    else
        Q(i) = 0;
    end
end

以下是我收到的错误消息:

>>>Desired number of time slots: Desired length of packet train: time_slots = [
](0x0)
>>>error: invalid conversion from real matrix to real scalar
error: octave_base_value::int_value (): wrong type argument 'matrix'
error: rand: expecting integer arguments
>>>

另外,当我只用用户输入行运行程序时,我没有收到错误。但是,它并未将我的输入分配给正确的变量(而是将其分配给ans。请参阅下文:Screenshot of result without any additional code

1 个答案:

答案 0 :(得分:0)

以下是我将来为任何人解决的问题。

首先,我从代码中删除了不必要的%。然后我确保在QtOctave中按下正确的按钮,如下所示(正确的按钮以绿色圈出,错误的按钮以红色划掉):

enter image description here