如何在Matlab编程中加入限制

时间:2015-01-29 15:35:08

标签: matlab

所以我想生成像theta = asind(x)这样的公式,然后我做一个这样的程序:

x=0.5:5
theta=asind(x)
if x>1
theta = out of range
otherwise x=<1
end
fprintf('theta')

但它会出错: xrdError:File:xrd.m行:4列:17 意外的MATLAB表达式。

请帮帮我

2 个答案:

答案 0 :(得分:1)

明智的做法是将NaN(不是数字)设置为无效或缺失的值。这可以在没有循环的情况下轻松完成:

x=0.5:0.1:5;  % changed spacing so there is more than one valid x
theta=asind(x);
theta(x>1)=NaN;
plot(x,theta); % will plot only the valid values

答案 1 :(得分:0)

你说当theta的对应值超出范围时,你希望x的元素说“超出范围”,否则显示{{1}的反正弦值}。

这在Matlab中有点奇怪,因为Matlab中的数据往往是数字数组或字符数组,而不是数字和字符的混合。

是一种通过使用所谓的单元数组来混合数字和字符的方法。可以像这样创建一个单元格数组

x

您可以分配和访问像这样的元素

cell1 = {};
cell2 = cell(5, 1);

所以你想写的(我认为)程序看起来像

cell1{1} = 'Hello';
cell1{2} = 7;
disp(cell{1})

输出

x = (0.5 : 5)';
theta = cell(size(x));

for i = 1:length(x)
    if x(i) < -1 || x(i) > 1
        theta{i} = 'Out of range';
    else
        theta{i} = asind(x(i));
    end
end

x, theta

但是,您可能应该重新考虑您希望程序执行的操作,因为在Matlab中使用单元格数组并不是一种特别容易使用的数据类型。