所以我想生成像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表达式。
请帮帮我
答案 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中使用单元格数组并不是一种特别容易使用的数据类型。