常见MATLAB小技巧
2015-11-24 20:35
711 查看
Cookbook 供自己查阅
问题1:一个m*n阶的矩阵A,一个m维列向量B,如何对A的每行操作,减去列向量对应的值,如:A=[1 2 3; 3 4 5],B=[1,2].得到结果是C=[0 1 2;1 2 3].
方案:
A = [1 2 3; 3 4 5];
B = [1,2];
C = bsxfun(@minus, A, B.')
问题2:一个m*n阶的矩阵A,返回该矩阵每行最小的列的标号
方案:[c,p]=max(A,[],2);%p为m*1的列向量,每个值为列号
问题3:matlab中var(x,w)后面加个w是什么意思
var用来计算方差,w表示权重,也就是说,x中各元素的重要程度不同。
其计算过程如下:
以x=[1;2;3];w=[0.1 0.2 0.3];为例:
问题4:一个函数的某个参数为空或者不存在如何表示
问题5:如有一个mX2的矩阵A,每行保存的是矩阵B部分元素的坐标,想将矩阵B中对应的A中元素置为1,除了循环给每个元素置1,请问还有什么好方法?
示例(为了与其它元素区别,赋值用NaN):
输出:
附:提取矩阵元素的三种方法:
6.定位图像中像素坐标的方法(matlab)
7.寻找两个向量的不同
8.matlab的struct结构体数组如何进行大量赋值
比如a=struct('ID', {1,2,3,4,5,6,7,8,9,10})
如果我要把a(1:2:9).ID赋值为1:5,除了用for循环外,应该如何写?
来自http://www.ilovematlab.cn/thread-302309-1-1.html
9.结构数组的相关内容
9.1 结构数组的初始化
9.2 提取结构数组中某一域的值
问题1:一个m*n阶的矩阵A,一个m维列向量B,如何对A的每行操作,减去列向量对应的值,如:A=[1 2 3; 3 4 5],B=[1,2].得到结果是C=[0 1 2;1 2 3].
方案:
A = [1 2 3; 3 4 5];
B = [1,2];
C = bsxfun(@minus, A, B.')
问题2:一个m*n阶的矩阵A,返回该矩阵每行最小的列的标号
方案:[c,p]=max(A,[],2);%p为m*1的列向量,每个值为列号
问题3:matlab中var(x,w)后面加个w是什么意思
var用来计算方差,w表示权重,也就是说,x中各元素的重要程度不同。
其计算过程如下:
w = w(:)/sum(w) % 权重归一化 avg = sum(w.*x) % 计算加权平均值 cx = x - avg % 各元素对均值的偏差量 y = sum((conj(cx).*cx).*w) % 对偏差加权求方差
以x=[1;2;3];w=[0.1 0.2 0.3];为例:
w = w(:)/sum(w) % w=[0.167 0.333 0.50]; avg = sum(w.*x) % avg=sum(0.167 0.667 1.50)=2.333 cx = x - avg % cx=[-1.333 0.333 0.667] y = sum((conj(cx).*cx).*w) % 对偏差加权求方差(-1.333)*(-1.333)+0.333*0.333+0.667*0.667=0.556
问题4:一个函数的某个参数为空或者不存在如何表示
function [centroids, idx] = runkMeans(X, initial_centroids, max_iters, plot_progress) % Set default value for plot progress if ~exist('plot_progress', 'var') || isempty(plot_progress) plot_progress = false; end
问题5:如有一个mX2的矩阵A,每行保存的是矩阵B部分元素的坐标,想将矩阵B中对应的A中元素置为1,除了循环给每个元素置1,请问还有什么好方法?
示例(为了与其它元素区别,赋值用NaN):
% 生成测试数据 B = magic(5); B = B(1:3, :) [r,c] = find(B>20); A = [r c] % 将B中以A作为下标的元素置为NaN B((A(:,2)-1)*size(B,1)+A(:,1)) = NaN
输出:
>> B = magic(5); >> B = B(1:3, :) B = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 >> [r,c] = find(B>20); >> A = [r c] A = 2 1 1 2 3 5 >> B((A(:,2)-1)*size(B,1)+A(:,1)) = NaN B = 17 NaN 1 8 15 NaN 5 7 14 16 4 6 13 20 NaN
附:提取矩阵元素的三种方法:
diag(B(A(:,1),A(:,2))) arrayfun(@(r,c)B(r,c),A(:,1),A(:,2)) B((A(:,2)-1)*size(B,1)+A(:,1))
6.定位图像中像素坐标的方法(matlab)
显示图像后,直接在命令窗口输入impixelinfo敲回车(可以实时显示鼠标所在位置的坐标和像素值)
7.寻找两个向量的不同
>>> a=[5:9]; >>> b=[1:6]; >>> [value,indxe]=setdiff(a,b) val = 7 8 9 ind = 3 4 5
8.matlab的struct结构体数组如何进行大量赋值
比如a=struct('ID', {1,2,3,4,5,6,7,8,9,10})
如果我要把a(1:2:9).ID赋值为1:5,除了用for循环外,应该如何写?
b = mat2cell(1:5,1,ones(1,5)) [a(1:2:9).ID] = deal(b{:})
来自http://www.ilovematlab.cn/thread-302309-1-1.html
9.结构数组的相关内容
9.1 结构数组的初始化
factors = repmat(struct('var', [], 'val', []), n , 1);
9.2 提取结构数组中某一域的值
stockName = {'股票1','股票2','股票3','股票4','股票5'}; stockPrice = 1:5; stocks = struct('Name', stockName, 'Price', num2cell(stockPrice)); stocks= '股票1' 1 '股票2' 2 '股票3' 3 '股票4' 4 '股票5' 5
相关文章推荐
- 绘制y=sin(x)/x的图形
- 用MATLAB进行SVM分类
- matlab quadprog函数 二次规划的matlab解法
- matlab load
- matlab save 命令
- libsvm之(一)安装与测试(matlab)
- Matlab调用C的时候的一个小备注
- 支撑向量机 SVM 学习笔记(Matlab代码)
- MATLAB中squeeze函数的作用
- Python 读写matlab中.mat文件
- 将sin()与cos()显示在同一个网格里
- Matlab里面.M文件不能运行,预期的图像也显示不出来的一个原因
- Q: How could I use MATLAB interface for parameter selection?
- 如何在matlab中添加工具箱addpath
- matlab 函数调用问题(一)
- MATLAB的cat()函数
- matlab中repmat函数的用法
- 如何使用matlab从视频中提取出一帧帧图像
- matlab初学 第一天
- matlab位运算函数