前言
由于特殊原因,需要使用国产软件MWORKS来替代MATLAB(当然这可能也是很多国内军工院校企业的发展趋势)。虽然这两个我之前都没有接触过,但在学习的过程中,确实发现目前MWORKS很多不如MATLAB的方便的地方。更头疼的是,MWORKS的相关文章指南少之又少,所以鄙人就像把自己学习过程中的零碎笔记知识点记录下来,一方面留给自己复习参考,另一方面,说不定就能帮到和我一样在学习MWORKS的人呢。
当然我的笔记可能会比较乱,因为我本身就不是一个有条理的人,大多数的笔记应该会以例子例题的形式出现,便于理解。
数组与矩阵的运算
No.1
julia代码如下:
A = collect(reshape(1.0:18.0, 3, 6))
# 创建浮点数数组
# 注意在julia中必须使用collect函数处理
# 将reshape生成的view变成数组,才能进行更改
A[findall(in([2.0, 4.0, 8.0, 16.0]), A)] .= NaN
# 替换元素,注意使用.= 并且都要使用float型,
# 因为在julia中NaN无法与int型匹配
A[:, 4:5] .= Inf
# 注意都要使用.= ,才能对元素而不是对整体操作
MATLAB代码如下:非常简洁,也不用考虑各种形式的问题,包容性极高
A=reshape(1:18,3,6)
A(ismember(A, [2, 4, 8, 16])) = NaN;
# A(:, 4:5) = Inf;
No.2
全下标 和 单下标
A = rand(3, 5) # 生成 A
indices = LinearIndices(A)[findall(x -> x > 0.5, A)]
# 找出 A 中所有大于 0.5 的元素的索引
row, col = find(A .> 0.5, nargout=2)
# 找出 A 中所有大于 0.5 的元素的行和列,结果是分开输出行和列数组
row-col=findall(x->x>0.5,A)
#第二种办法, 将返回笛卡尔索引(CartesianIndex)
这里附上find
与findall
函数的用法
#find 查找非零元素的索引和值
k = find(X;nargout)
k = find(X,n;nargout)
k = find(X,n,direction;nargout)
row,col = find(___)
row,col,v = find(___)
#findall 在指定域内查找目标内容并返回所有匹配的索引
findall(A)
findall(f, A)
findall(pattern, string; overlap)
matlab代码:
A = rand(3,5);
% 生成 A
indices = find(A > 0.5);
% 找出 A 中所有大于 0.5 的元素的单下标
[row, col] = find(A > 0.5);
% 找出 A 中所有大于 0.5 的元素的全下标