Re: [問題] 矩陣元素取代 不用迴圈硬幹

作者: panzertp (失ゎれた彩畫)   2014-09-24 00:31:00
※ 引述《kobenein (哈哈哈)》之銘言:
: X = [0 0 0 1 1 1 1];
: Y = [a0 a1;b0 b1;c0 c1];
: 如何不用迴圈硬幹
: 得到一個矩陣
: [a0 a0 a0 a1 a1 a1 a1;
: b0 b0 b0 b1 b1 b1 b1;
: c0 c0 c0 c1 c1 c1 c1;];
: 謝謝
提供一個更general的方法如下
clear all;clc;
X = [0 0 0 1 1 1 1];
a0=[1 2;3 4];
a1=[5 6;7 8];
b0=[9 10;11 12];
b1=[13 14;15 16];
c0=[17 18;19 20];
c1=[21 22;23 24];
Y = [a0 a1;b0 b1;c0 c1];
A=[a0(:,1);b0(:,1);c0(:,1)];B=[a1(:,2);b1(:,2);c1(:,2)];
T=char(length(X));
T(X==0)='A';
T(X==1)='B';
T=regexprep(T,'A','A ');
T=regexprep(T,'B','B ');
eval(['R=[',T,']'])
R即為所求
主要利用邏輯判斷 然後做出一個字串 最後再來eval
為了eval方便 利用了字串取代的方式來做
這樣的做法不只可以處理X中連續0和連續1的情形 0和1交錯也可以
同時你可以發現我把abc都當成2x2矩陣了 一樣可以work

Links booklink

Contact Us: admin [ a t ] ucptt.com