声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1482|回复: 5

[编程技巧] 取值范围自动变化问题

[复制链接]
发表于 2011-3-10 11:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
有一个矩阵x=[1 2 3;9 10 11;5 6 7];第一行的取值范围是[0,4],第二行的范围是[8,12];第三行的范围是[4,8],根据每行数字的总和进行升序排列,变成x=[1 2 3;5 6 7;9 10 11],那么相应的每行的取值范围也要跟着改变,如何通过MATLAB语言实现每行的范围在矩阵x发生变化后,其范围也跟着变化?如果用到sort函数,会涉及到index语句,还请高手进行指点,谢谢
回复
分享到:

使用道具 举报

发表于 2011-3-10 11:54 | 显示全部楼层
回复 1 # xinjt0624 的帖子

取值范围也作成矩阵,在你所说的例子中:
排序前值矩阵为:x = [1 2 3 ; 9 10 11; 5 6 7];
排序前的取值范围矩阵为: xa = [0 4; 8 12;4 8];

再排序中,会对值矩阵进行的列交换,将同样的交换作用在取值范围矩阵上,则排序后为:
y = [1 2 3;5 6 7;9 10 11];
ya =[0 4; 4 8 ; 8 12];

点评

赞成: 5.0
赞成: 5
谢谢指导  发表于 2011-3-10 22:32

评分

1

查看全部评分

发表于 2011-3-10 16:23 | 显示全部楼层
  1. clear;clc;close all
  2. A = [1 2 3; 9 10 11; 5 6 7];
  3. R = [min(A,[],2) - 1,max(A,[],2) + 1];
  4. [~,ind] = sort(sum(A, 2));
  5. A = A(ind, :);
  6. R = R(ind, :);
复制代码

点评

赞成: 5.0
赞成: 5
谢谢,不胜感激  发表于 2011-3-10 22:29

评分

1

查看全部评分

 楼主| 发表于 2011-3-10 22:31 | 显示全部楼层
谢谢,又学到了不少知识
发表于 2011-3-13 22:22 | 显示全部楼层
本帖最后由 ChaChing 于 2011-3-13 22:24 编辑
看高手的回帖就是会有所得!
第一次看到"~"这种用法, 我只知有"非"的用法, 只得马上开matlab, help并搜索下, 但没找到!
直接试下, 但会报错!
??? [~,ind] = sort(sum(A, 2))
|
Error: Expression or statement is incorrect--possibly unbalanced (, {, or [.
我的R2009a, 请问这是否又是新版功能?

点评

To qibbxxt : thanks!  发表于 2011-3-14 11:45
恩,这是新版本的一个功能,应该是在09b或者是10a中出现的,这样就可以避免不用的变量,但却要占用位置的问题,也看见过输入用这个的  发表于 2011-3-14 08:48
发表于 2011-3-17 14:08 | 显示全部楼层
ChaChing 发表于 2011-3-13 22:22
看高手的回帖就是会有所得!
第一次看到"~"这种用法, 我只知有"非"的用法, 只得马上开matlab, help并搜索下 ...

哈,我也是换了版本才学会的,新版本发现程序有用不到的变量就会提醒,还提示新的用法。坏处就是如果去低版本上运行会报错

2010版还出了新功能,把光标指向的变量在全文中高亮显示

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 11:13 , Processed in 0.081690 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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