MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
MathWorks招聘:MATLAB数字化市场专家(全职),中国 (北京)
MATLAB R2014b 正式发布
查看: 3037|回复: 2

[已答复] 请问如何改变一个矩阵中某些元素的值?

[复制链接]
发表于 2012-2-22 11:44:13 | 显示全部楼层 |阅读模式
比如矩阵 A = zeros(20),
x=[1 4 7 11];
y=[1 4 7 11];
要改变A(1,1),A(4,4),A(7,7)A(11,11)的值,我用A(x,y)=1,结果改变了矩阵A中16个元素的值。请问怎么改变4个元素的值?
  
先谢了!
发表于 2012-2-22 12:13:29 | 显示全部楼层
MATLAB初学者必读
for i=1:1:length(x)
A(x(i),x(i))=1
end
-------------------------------------
A =

     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
发表于 2012-2-22 12:35:18 | 显示全部楼层
本帖最后由 meatball1982 于 2012-2-22 14:59 编辑

当然,用for是可以实现的,但Matlab中的下标是按列存的,所以我的思路是用x,y生成矩阵的下标,并进行符值。x,y是任意等长的向量。


clear all
clc

n=8
A = zeros(n);
x=[1 4 7];
y=[2 3 5];

ind=(y-1).*n+x;

A(ind)=1;
A

% typed by : m
% typed on : 12:37 2012-2-22

突然觉得这个方法能挺好用的,可以给任意的下标符给任意的值。比如向A中的x,y下标符z值。于是写了一个函数。调用看帮助就行。新版的主程序如下。

clear all
clc

n=7;
A = zeros(n);
x=[1 3 6];
y=[2 7 5];
z=[25 2 17];
A
A=fun_ind_val(A,x,y,z);
A

% typed by : mm
% typed on : 12:37 2012-2-22
% modified on : 15:03 2012-2-22

fun_ind_val.m (546 Bytes, 下载次数: 9)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

联系我们|版权保护|小黑屋|Archiver|手机版|MATLAB中文论坛 ( 苏ICP备08100737号 )

GMT+8, 2014-10-25 10:34 , Processed in 0.414603 second(s), 34 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表