matlab - 如何知道要分配的向量的大小?
问题描述
我写了一个函数 y(x) ,在这个函数中检查输入值 abs(x(t))<= 2 然后我想要输出 y=x; 但我得到一个错误
“无法执行分配,因为左侧和右侧的元素数量不同。”
,但我没有定义 y 的大小!是否应该具有类似于 x 大小的默认大小?
function y = my_f(x)
y(abs(x)<=2)=x;
y(x<-2)=-2;
y(x>2)=2;
end
N=1000;
t=linspace(0,10,N+1);
t(end)=[];
x1=(3*sin(2*pi*t/4)+0.5*cos(2*pi*6*t));
y= my_f(x1);
figure;hold on; grid on;
plot(t,y,':r','LineWidth',2)
解决方案
在您的函数my_f(x)
中,y(abs(x)<=2)=x;
您仅将一部分设置为不适合y
的完整向量。x
此外,您还没有初始化y
,所以在它存在之前进行索引有点奇怪。
既然你想y
等于x
,对于指定的条件,你可以这样做:
function y = my_f(x)
y = x;
y(x<-2)=-2;
y(x>2)=2;
end
有趣的是,您无需定义y
为 的副本x
,只要分配相同数量的元素即可。因此,这也有效(虽然不推荐!)
function y = my_f(x)
y(abs(x)<=2) = x(abs(x)<=2);
y(x<-2)=-2;
y(x>2)=2;
end
如果您检查y
,您将看到其他abs(x)<=2
不成立的索引将设置为零。
推荐阅读
- presto - 在哪里可以找到 presto 最新版本存储库和 presto 发行说明
- javascript - 使用 PixiLoader 加载带有数据 URI 的图像
- reactjs - 如何使用 next.config.js 从 node_modules 加载 svg?
- svg - svg 元素的属性的 XPath 是什么?
- javascript - 使用 .then 从 async/await 函数中提取数据
- python - 尝试实现将电话簿的嵌套列表转换为字典的功能
- json - 如何使用shell处理json数据
- c# - 如何使用无键实体类型在 EF 模型中定义查询?
- python-3.x - 如何以 root 身份在 python 脚本中运行命令?
- javascript - 如何将句子中除某些单词之外的所有单词大写?