matlab - 将方程应用于数组的特定行并将答案连接到数组
问题描述
% Example
array = [1 2 3 4 5 6 0 0 0];
for i = 1:length(array)
if i(1) ~= 0
array_mag_1 = sqrt(array(1)^2 + array(2)^2 + array(3)^2);
if exist('array_mag_1','var') == 1
new_array = array_mag_1;
end
elseif i(4) ~= 0
array_mag_2 = sqrt(array(4)^2 + array(5)^2 + array(6)^2);
if exist('array_mag_2', 'val') == 1
new_array = cat(array_mag_1, array_mag_2);
end
elseif i(7) ~= 0
array_mag_3 = sqrt(array(7)^2 + array(8)^2 + array(9)^2);
if exist('array_mag_3', 'val') == 1
new_array = cat(array_mag_1, array_mag_2, array_mag_3);
end
end
end
for j = 1:length(new_array)
if j > 0
cat_new_array = new_array(j);
else
return
end
end
获取 3 个元素的集合(如果它是非零),找到大小并将其连接到“cat_new_array”,然后跳过剩余的零的最佳方法是什么?我还发现它保留了第一个'array_mag_1',即使它在数组(4)中有非零值。我是编码新手,所以对于任何混淆,我深表歉意。任何帮助表示赞赏。
解决方案
尝试这个:
array = [1 2 3 4 5 6 8 9 7 0 0]
array_non_zero = find(array);
cat_new_array = [];
for i=1:floor(numel(array_non_zero)/3)
cat_new_array = [cat_new_array, norm(array(array_non_zero((i-1)*3+1:i*3)))]
end
此代码从数组 3 中获取非零元素,并计算每组 3 个元素的范数。如果这就是你需要的,我没有从你的问题中弄清楚。
推荐阅读
- python - 使用 python pandas 将现有的 excel 表附加到新的数据框,而不加载旧的
- java - 在不和谐机器人上上传用户文件
- azure - HeadNode,workers Azure 中的节点大小详细信息
- autohotkey - 在自动热键脚本中插入数据
- android - 错误:APK 未使用上传证书签名。[403] - VS2019 存档管理器
- typescript - TypeScript:按数字获取枚举项
- excel-formula - 如何在“A”字符后添加一个零到此字符串类型,Excel 中的“A001”(转换 A001 --->A0001)?需要专业知识
- java - 如何调整 JOptionPane 的大小?
- swift - 无法过滤对象数组
- amazon-redshift - Redshift 存储过程 - 在变量中添加单引号值