Re: [問題] 矩陣的加法?已回收
※ 引述《laechan (小太保)》之銘言:
: ※ 引述《sqrt1089 (李崩子)》之銘言:
: : 以爬文
: : 題目是:
: : A=[1 2 3 4 5 6 7 8 9] %1個1*9的矩陣
: : a=A(1,1) %抓A1-1位置
: : 然後中間假設我算出一個B矩陣=[0 9 8 3 4 5 6 8 7] 也是一個1*9(這是假設的)
: : 那我現在想要得出 c=[1 9 8 3 4 5 6 8 7]就是把B矩陣第一個位置加入a
: : 我作法是:
: : c=a+B;
: : 結果是c=[1 10 9 4 5 6 7 9 8]
: : 但是他會全部都+1...
: : 但是我只要第一個+1就好
: : 我的想法是如果把a可以變成a=[1 0 0 0 0 0 0 0 0]
: : 就可以了,但是不會指令讓 a=[1 0 0 0 0 0 0 0 0]
: : 感謝大大幫忙了~
: 假設未知 B 的長度
: A = [1 2 3 4 5 6 7 8 9];
: B = [0 9 8 3 4 5 6 8 7]; % 中間計算產生的
: a = A(1,1); % 看你這時要讓 a 等於什麼, 這裡以你舉的 1,1為例
: la = length(a); % 跟著計算 a 的長度
: c = B; % 因為 c 跟 B 很像
: c(1,1:la) = a + B(1,1:la); % 讓 c 的前幾個為 a + B前幾個 的和
: 這樣的寫法,不管你 a 得到什麼,或產生的 B 矩陣長度是
: 多少,都可以算,A B 也會是原先的 A B。
提供一個使用logical array的版本
clear all;clc
A = [1 2 3 4 5 6 7 8 9];
B = [0 9 8 3 4 5 6 8 7];
C=B;
L=false(1,length(B)); %建立一個維度和B相同的logical array
L(1)=1; %並讓第一個元素為true 因此
%此例中 L=[1 0 0 0 0 0 0 0 0]
C(L)=B(L)+A(L); %讓C中符合L的項次為B及A中相同位置之元素和
執行結果:
C =
1 9 8 3 4 5 6 8 7
使用這個方式的好處為
若目的改為非僅只要第一元素相加 只需要跟著改變L中1的位置即可
如果L中1的數目不止一個 則會讓對應位置的元素相加
另外A與B之長度若有不同 也可以運算
但是限制是 L中1的位置不能超過較短矩陣的長度
--
時の放浪者 (Toki no Hourousha) ----"FF6 Tina's Theme"
遙か遠く 夜を越えて 砂漠の海を 彷徨う
神の聲は 蜃氣樓 忘れられた人々
影は白く 搖らめきたつ 今ひとたびの 幻
蒼く燃える 勇者の夢 永遠に眠る人々
遙か遠く 夜を越えて‧‧‧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.82.2
推
09/09 17:35, , 1F
09/09 17:35, 1F
推
09/09 18:26, , 2F
09/09 18:26, 2F
→
09/09 18:26, , 3F
09/09 18:26, 3F
討論串 (同標題文章)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章