MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
欢迎参加2014年全国大学生数学建模竞赛的团队申请MATLAB软件
刘鹏:一年解答5000个MATLAB问题的感受 math:MATLAB/Simulink在工业界和学术界中的使用及就业市场 孙忠潇:Simulink及基于模型设计的嵌入式应用
查看: 2678|回复: 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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则


MathWorks免费在线研讨会

在MATLAB/Simulink中

使用脚本建立复杂电力系统模型

 

 

适合建模,仿真及控制算法设计工程师

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

GMT+8, 2014-7-29 20:35 , Processed in 0.469853 second(s), 32 queries , Xcache On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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